Skip to content
Published at:

SQLite: Database is locked

SQLite 数据库无法写入数据,报错:Database is locked

一般有被锁住,大概率是和并发之类的相关,同时操作数据库出的问题;想想不应该呀,我那个是单线程操作一个SQLite数据库;就去Google找了下资料。找到 fuser命令,可以用来查看那些进程open了这个数据库文件;显示有两个同名的进程,程序被启动了两次,好家伙。然后排查,一个是自己脚本启动的,一个是被dbus唤起的;原因是数据库的进程有初始化的耗时操作,其它进程没有找到脚本启动的那个数据库进程,唤起了一个进程

bash
$ fuser xxx.db

后续有时间在深入研究

References:

  1. https://stackoverflow.com/questions/151026/how-do-i-unlock-a-sqlite-database
  2. https://www.sqlite.org/lockingv3.html

Updated at: