2009-06-26 6 views
5

Me enfrento a un error de SQLite aunque no estoy utilizando ningún AutoCommit explícito verdadero o falso. puede alguien proporcionar cualquier entrada sobre este error. ¿Cuál es la situación en la que obtendrá este error?Error de SQLite: no se puede confirmar la transacción: sentencias de SQL en progreso usando el código Java

Gracias de antemano. Saludos, Manasi Guardar

+0

¿Puede por favor publicar un fragmento de código? –

+0

¿Y qué versión de SQLite está ejecutando? –

+0

Estoy usando SQLite Version 3 –

Respuesta

5

Me enfrenté a un problema similar en repetidas ocasiones (en mi caso era una reversión que no era posible) cuando estaba dentro de un bucle haciendo bucles sobre las entradas de la tabla. Siempre que el cursor esté procesando las entradas, una instrucción SQL está "en progreso". No sé exactamente si esto también prohíbe los commits, pero podría ser.

Cuando intente procesar entradas de tabla e insertar entradas en la misma tabla o en una tabla diferente, es posible que desee intentar recopilar los datos en la memoria y después del ciclo hacer las inserciones o actualizaciones.

Información adicional: "Autocommit" normalmente está predeterminado en "True" en SQLite (por supuesto, también podría depender de la capa de acceso que use; estoy usando Python y apsw, así que no puedo contarle más sobre esto en Java). Esto significa que cada inserción se autocompone de inmediato.

==> esto podría ser otra solución. En lugar de almacenar los datos en la memoria, podría tratar de abrir una transacción explícitamente y confirmarla después del ciclo; de esta forma, el problema también debería desaparecer.

Cuestiones relacionadas