Таблица базы данных Sqlite3 постоянно заблокирована для записи - PullRequest
0 голосов
/ 23 июня 2019

При выполнении кода Python3 в блокноте Jupiter код читает и записывает из базы данных sqlite3. У него была временная проблема с блокировкой базы данных, которая теперь кажется постоянной. На данный момент код может читать из базы данных, но не может писать в нее. Ошибка:

Execution failed on sql 'DROP TABLE "T2_xxx"': database table is locked

или

Execution failed on sql 'DROP TABLE "T2_xxx"': database is locked

Я просмотрел все соответствующие сообщения здесь в стеке и могу подтвердить:

  • проблема в том, что не другой процесс, обращающийся к БД. Нет никаких других процессов, кроме ОС и ноутбука Jupyter.
  • копирование файла БД и перемещение / переименование / и т.д. не помогает
  • изменение «тайм-аута» не решает проблему
  • Я могу читать базу данных с другими приложениями. Я использовал и Beaver.db, и DB Browser для sqlite3 и могу подключиться и редактировать базу данных любым из них (и да, после закрытия этих приложений я не могу получить доступ к базе данных с помощью своих сценариев Jupyter)
  • Я неоднократно перезагружался
  • Я запускал Jupyter как с окружением Conda, так и без него, но это, похоже, не имело значения.
  • Нет проблем с подключением, и есть только один оператор записи:
T2_temp.to_sql(table_name, con, if_exists="replace", index=False)

Дополнительные интересные поведения:

  • Я могу создать новую таблицу и написать в нее один раз. Любые дальнейшие записи сообщают, что таблица заблокирована.
  • ядро ​​Jupyter регулярно перезапускалось во время разработки

Я хотел бы знать, знает ли кто-нибудь, почему может возникнуть блокировка в ситуации, которую я объяснил, и есть ли возможность разблокировать БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...