我正在尝试使用sqlite创建一个新数据库,但我一直收到以下错误:
sqlite3 new.db
SQLite version 3.3.6
Enter ".help" for instructions
sqlite> begin immediate;
SQL error: database is locked
我尝试从源代码构建最新的sqlite,我收到以下错误:
sqlite3 new.db
SQLite version 3.8.8.3 2015-02-25 13:29:11
Enter ".help" for usage hints.
Error: disk I/O error
我有可用的磁盘空间,我尝试按disk I/O error with SQLite中的建议创建数据库文件的副本,但没有任何运气。
类似问题的所有解决方案都指向数据库被另一个进程锁定的问题。但在这种情况下不应该发生这种情况。
它看起来像是一个环境问题,但我对这个问题的根源一无所知。
有没有人遇到过类似的东西?
编辑: 此错误是由文件系统引起的。有问题的文件系统是旧版本,显然它不支持群集锁定。关于nfs上的sqlite数据库还有许多其他SO问题。
答案 0 :(得分:1)
如果启用了SELinux或AppArmor,则根据分发情况,您可能会收到此错误。
答案 1 :(得分:0)
如果数据库文件是可写的,但是日记文件(附加了 -journal 的同名文件)是不可写的,也会发生这种情况。如果数据库文件不可写,那么您将尝试写入只读数据库。