При выполнении кода 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 регулярно перезапускалось во время разработки
Я хотел бы знать, знает ли кто-нибудь, почему может возникнуть блокировка в ситуации, которую я объяснил, и есть ли возможность разблокировать БД.