SQLite3数据库文件 - 仅在Linux上损坏/加密

0 投票
2 回答
1318 浏览
提问于 2025-04-17 02:49

我现在正在写一个Python脚本,想和一个SQLite数据库互动,但它一直提示数据库是“加密或损坏的”。这个数据库肯定没有加密,所以我尝试用命令行的sqlite3库打开它(结果还是同样的错误),还用Firefox的SQLite Manager插件试过……

我有一个相同数据库结构的备份,但这个备份是用Windows上的另一个实例生成的。我用SQLite Manager打开它,结果一切正常。于是我做了个快速测试,把那个“加密或损坏”的数据库放到USB闪存驱动器上,插到Windows机器上,结果用管理器第一次就顺利打开了,没有问题。

有没有人知道这可能是什么原因呢?

补充:

在Linux机器上,我尝试以root身份访问,但没有成功。我还试着把它的权限改成777,只是做个测试(在数据库的复制版本上),结果还是没有成功。

2 个回答

0

你需要检查一下用户的权限,可能这个用户在Linux系统上没有足够的权限。

2

你的Linux系统上的SQLite版本和Windows系统上的一样吗?如果SQLite版本太旧,可能无法识别使用了新功能的文件。例如,WAL日志模式

为了防止旧版本的SQLite试图恢复一个使用WAL模式的数据库(这样可能会让问题变得更糟),数据库文件格式的版本号(在数据库头部的第18和19个字节)在WAL模式下从1增加到2。因此,如果旧版本的SQLite尝试连接一个正在使用WAL模式的SQLite数据库,它会报错,提示类似“文件被加密或不是一个数据库”的信息。

撰写回答