База данных Sqlite закрыта, и я не могу написать ей [duplicate]

11
задан Ishq Mehta 11 November 2014 в 11:34
поделиться

3 ответа

Это означает, что эта ошибка означает:

SQLite означает легкую базу данных и, следовательно, не может поддерживать высокий уровень параллелизма. Ошибки OperationalError: ошибки в базе данных указывают на то, что ваше приложение испытывает больше параллелизма, чем sqlite может обрабатывать по умолчанию. Эта ошибка означает, что один поток или процесс имеет исключительную блокировку соединения с базой данных, а другой поток истекает, ожидая освобождения блокировки.

Оболочка SQLite Python имеет значение тайм-аута по умолчанию, которое определяет, как долго второй потоку разрешено дождаться блокировки до того, как он истечет, и вызывает ошибку OperationalError: database заблокирована.

Если вы получаете эту ошибку, вы можете ее решить:

Переход на другой сервер базы данных. В какой-то момент SQLite становится слишком «легким» для реальных приложений, и эти разновидности ошибок параллелизма указывают на то, что вы достигли этой точки.

Перезаписывание кода для уменьшения параллелизма и обеспечения коротких транзакций базы данных -lived.

Увеличьте значение тайм-аута по умолчанию, установив параметр базы данных таймаута.

Возможно, у вас есть другое соединение в коде, который не закрыт или не зафиксирован, и это вызвать эту ошибку. В основном пытается сделать второй execute, когда он уже заблокирован другим. Если вы действительно хотите иметь свои параллельные транзакции, вам необходимо иметь RDBMS .

21
ответ дан Joshua Ryan 26 August 2018 в 09:58
поделиться

убедитесь, что вы передаете другие соединения, используя con.commit ()

1
ответ дан Mohamed Ibrahim 26 August 2018 в 09:58
поделиться

У меня такая же ошибка, когда я выполнил unittests в моем приложении FLASK. Я решил проблему следующим образом:

Перейдите в папку проекта, затем найдите экземпляр / удалите файл filename.db

0
ответ дан s.iliyan 26 August 2018 в 09:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: