Есть ли известная проблема с SQLite, дающая ошибку «база данных заблокирована» для второго запроса в одной транзакции при использовании Perl DBD :: SQLite? Сценарий: Linux, Perl DBI, AutoCommit => 0, подпрограмма с двумя блоками кода (с использованием блоков для локализации имен переменных). В первом блоке кода дескриптор запроса создается командой prepare() в инструкции select, он выполняется(), и блок закрыт. Второй код блокирует другой дескриптор запроса, создается путем подготовки к оператору обновления, а часто (30% времени) SQLite/DBI дает ошибку блокировки базы данных на этом этапе. Я думаю, что ошибка происходит во время подготовки(), а не во время выполнения().Почему SQLite дает «базу данных заблокирован» для второго запроса в транзакции при использовании Perl DBD :: SQLite?
Моя работа заключается в фиксации после первого запроса. (Вызов завершения первого запроса не помог). Я предпочитаю не совершать несколько причин, связанных с элегантностью и эффективностью. Исходный код работал отлично в течение многих лет с Postgres в качестве базы данных. Я пробовал sqlite_use_immediate_transaction без эффекта.
Во всех других ситуациях я обнаружил, что SQLite работает очень хорошо, поэтому я подозреваю, что это надзор в драйвере DBD, а не проблема с SQLite. К сожалению, мой текущий код - большая куча скриптов и модулей, поэтому у меня нет короткого, однофазного теста.
Можете ли вы показать нам свой небольшой тестовый пример, который демонстрирует проблему? –