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

StackOverflow https://stackoverflow.com/questions/1049293

  •  20-08-2019
  •  | 
  •  

Вопрос

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

Заранее спасибо.С уважением, манаси

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top