我目前正在编写一个Python脚本来与SQLite数据库交互,但它一直在返回数据库是“加密或损坏”。 数据库肯定没有加密,所以我尝试在命令行使用sqlite3库打开它(返回相同的错误),并使用SQLite Manager插件为Firefox ...
我有一个相同的数据库结构的副本,但是在Windows框中由该程序的不同实例填充,我尝试使用SQLite Manager打开它并且它很好,所以作为快速测试我加载了“加密或损坏的“数据库到USB记忆棒上并将其插入到Windows机器中,使用它首次打开的管理器没有问题。
有没有人知道可能导致这种情况的原因?
编辑:
在Linux机器上我尝试以root身份访问它而没有运气,我也尝试将其调整为777作为测试(在数据库的复制版本上),再次没有运气
答案 0 :(得分:2)
您的Linux机箱是否与Windows机箱具有相同版本的SQLite?旧版本的SQLite可能无法识别使用较新功能的文件。例如,WAL journal mode。
防止旧版本的SQLite尝试恢复WAL模式 数据库(并且使情况更糟)数据库文件格式版本 数字(数据库头中的字节18和19)从1增加 在WAL模式下为2。因此,如果旧版本的SQLite试图 连接到以WAL模式运行的SQLite数据库,它会 报告“文件已加密或不是文件”的错误 数据库”。
答案 1 :(得分:0)
您应该检查用户权限,Linux上的用户可能没有足够的权限。