SQLite3 DBase表被永久锁定以进行写入

时间:2019-06-22 23:18:30

标签: python-3.x sqlite jupyter-notebook anaconda

在Jupiter Notebook中运行Python3代码时,该代码从sqlite3数据库读取和写入。它有一个间歇性的dbase锁定问题,现在似乎是永久性的。目前,该代码可以从dbase中读取,但不能对其进行写入。错误是:

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

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

我已经阅读了所有相关文章,可以确认:

  • 问题是不是另一个访问数据库的进程。除了OS和Jupyter Notebook,没有其他正在运行的进程。
  • 复制db文件并移动/重新命名/等等。没有帮助
  • 更改“超时”并不能解决问题
  • 可以与其他应用程序一起读取数据库。我已经将Beaver.db和DB Browser都用于sqlite3,并且可以使用其中一个连接到dbase并对其进行编辑(是的,关闭这些应用程序后,我无法使用Jupyter脚本访问db)
  • 我反复重启
  • 无论有没有Conda环境,我都运行过Jupyter,但这似乎不是一个因素。
  • 没有连接问题,只有一条写语句:
T2_temp.to_sql(table_name, con, if_exists="replace", index=False)

其他有趣的行为是:

  • 我可以创建一个新表并写入一次。任何进一步的写报告都表明该表已锁定。
  • Jupyter内核在开发过程中已定期重新启动

我想知道是否有人知道在我解释的情况下为什么会发生锁定以及是否有可能解锁数据库。

0 个答案:

没有答案