Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite3数据库文件锁定为读取和完整性检查_Sqlite_Panfs - Fatal编程技术网

SQLite3数据库文件锁定为读取和完整性检查

SQLite3数据库文件锁定为读取和完整性检查,sqlite,panfs,Sqlite,Panfs,试图提交200-300万行的插入时,进程崩溃。现在,我发现数据库文件在所有活动中都被锁定,包括读取、转储和运行完整性检查 我可以以某种方式解锁此数据库,或者让sqlite3恢复该文件吗 有没有办法恢复此数据库文件的内容?我确实有24小时前的备份,但是如果我必须完全回滚到旧版本的数据库,那么各种其他数据都将丢失 代码如下: $ sqlite3 dbFile.sqlite SQLite version 3.19.3 2017-06-08 14:26:16 Enter ".help" for usag

试图提交200-300万行的插入时,进程崩溃。现在,我发现数据库文件在所有活动中都被锁定,包括读取、转储和运行完整性检查

  • 我可以以某种方式解锁此数据库,或者让sqlite3恢复该文件吗

  • 有没有办法恢复此数据库文件的内容?我确实有24小时前的备份,但是如果我必须完全回滚到旧版本的数据库,那么各种其他数据都将丢失

  • 代码如下:

    $ sqlite3 dbFile.sqlite
    SQLite version 3.19.3 2017-06-08 14:26:16
    Enter ".help" for usage hints.
    sqlite> PRAGMA integrity_check;
    Error: database is locked
    sqlite> .tables
    Error: database is locked
    sqlite> SELECT * FROM dbTable LIMIT 1;
    Error: database is locked
    
    在数据库文件上运行
    fuser
    ,表示当前没有进程试图访问该文件。同一目录中有一个热文件(即
    dbFile.sqlite journal
    exists)

    使用stat,我发现有问题的文件夹类型为
    panfs
    ,这可能是问题的原因。我能在这里做什么

    值得注意的是,它不是的副本,因为数据库(1)没有被任何正在运行的进程锁定,如上所述,(2)也被锁定用于读取,(3)由于完全的读/写锁定,
    .dump
    中的解决方案不适用(因为
    .dump
    失败)


    最密切相关的问题是,尽管它位于不同的NFS文件系统上。

    显然,PanFS服务器没有注意到崩溃,因此仍然报告写锁

    如果可能,您可以尝试卸载并重新装载此计算机上的文件系统


    或者,将这两个文件(数据库和日志)复制到其他位置。当您打开该数据库时,SQLite将回滚部分事务。

    可能重复的事务。不幸的是,它不是!我更新了我的问题以澄清关键的区别。您提到了NFS和panfs。此数据库是否在网络装载上?我将数据库文件移动到ext2/ext3fs,并能够打开/转储数据库。谢谢