【问题标题】:Error: disk I/O error on a newly created database错误:新创建的数据库上的磁盘 I/O 错误
【发布时间】:2015-05-28 11:33:47
【问题描述】:

我正在尝试使用 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 问题。

【问题讨论】:

    标签: sqlite


    【解决方案1】:

    此错误是由文件系统引起的。有问题的文件系统是旧版本,显然它不支持集群锁定。关于 nfs 上的 sqlite 数据库还有许多其他 SO 问题。

    一些重复是:

    Locking sqlite file on NFS filesystem possible?

    How to ensure a safe file sync with sqlite and NFS

    【讨论】:

      【解决方案2】:

      根据发行版,如果启用 SELinux 或 AppArmor,您可能会收到此错误。

      【讨论】:

      • 我检查并在系统上禁用了 SELinux。我一直在研究它,这似乎是一个文件系统问题(我刚刚发现只有当我尝试在已安装的文件系统上创建数据库时才会收到此错误)。我改变了我原来的问题。
      【解决方案3】:

      如果数据库文件是可写的,但日志文件(与 -journal 相同的名称)不可写,也会发生这种情况。如果数据库文件不可写,那么您将尝试写入只读数据库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多