¿Existe un problema conocido con SQLite dando un error "la base de datos está bloqueada" para una segunda consulta en una sola transacción cuando se usa Perl DBD :: SQLite? Escenario: Linux, Perl DBI, AutoCommit => 0, una subrutina con dos bloques de código (utilizando los bloques para localizar nombres de variables). En el primer bloque de código, se crea un identificador de consulta mediante prepare() en una sentencia select, se ejecuta() y se cierra el bloque. El segundo bloque de código se crea otro identificador de consulta por preparación para una instrucción de actualización, y frecuentemente (30% del tiempo) SQLite/DBI da un error bloqueado en la base de datos en esta etapa. Creo que el error ocurre durante prepare() y no durante execute().¿Por qué SQLite da una "base de datos está bloqueada" para una segunda consulta en una transacción cuando se usa DBD :: SQLite de Perl?
Mi trabajo es confirmar después de la primera consulta. (Llamar al final de la primera consulta no ayudó). Prefiero no comprometerme por varias razones relacionadas con la elegancia y el rendimiento. El código original funcionó bien durante muchos años con Postgres como base de datos. Intenté sqlite_use_immediate_transaction sin ningún efecto.
En todas las demás situaciones, he encontrado que SQLite funciona muy bien, así que sospecho que esto es un descuido en el controlador DBD, en lugar de un problema con SQLite. Lamentablemente, mi código actual es una gran pila de scripts y módulos, por lo que no tengo un caso de prueba de un solo archivo corto.
¿Puede mostrarnos su pequeño estuche de prueba que demuestra el problema? –