Ошибка SQLite: невозможно зафиксировать транзакцию - выполняются операторы SQL с использованием кода Java - PullRequest
6 голосов
/ 26 июня 2009

Я сталкиваюсь с ошибкой SQLite, хотя я не использую явный AutoCommit true или false. Может ли кто-нибудь предоставить какой-либо вклад в эту ошибку. В какой ситуации вы получите эту ошибку.

Заранее спасибо. С Уважением, Манаси Сохранить

1 Ответ

5 голосов
/ 26 июня 2009

Я неоднократно сталкивался с подобной проблемой (в моем случае это был откат, который был невозможен), когда я был внутри цикла, перебирающего записи таблицы. Пока курсор обрабатывает записи, оператор SQL находится "в процессе". Я не знаю точно, если это также запрещает коммиты, но это может быть.

Когда вы пытаетесь обработать записи таблицы и вставить записи в ту же или другую таблицу, вы можете попытаться собрать данные в памяти и после цикла выполнить вставки или обновления.

Дополнительная информация: "Autocommit" обычно по умолчанию имеет значение "True" в SQLite (конечно, это также может зависеть от используемого вами уровня доступа - я использую Python и apsw, поэтому я не могу рассказать вам больше об этом в Джава). Это означает, что каждая вставка запускается автоматически.

==> это может быть другое решение. Вместо того, чтобы хранить данные в памяти, вы можете попытаться явно открыть транзакцию и зафиксировать ее после цикла - таким образом, проблема также должна исчезнуть.

...