SQLITE 文件已加密或不是数据库

Gor*_*ran 7 sqlite

我有一个大问题...我正在使用 SQLite 开发桌面应用程序,但是在复制/粘贴过程中,我失去了电源并且进程被终止,因此基础丢失了。但是,我找到了一种方法来恢复它,但 base 是加密的。当我尝试使用打开连接时出现conn.Open();此错误。如果我尝试使用 DB Browser for SQLite 打开它,它会询问我 SQLCipher 加密密码,因此我认为数据丢失了..

有没有默认密码?为什么会发生这种情况以及如何防止它再次发生?我能做什么 ?

提前致谢。

uli*_*tko 12

还要检查您“连接”的 SQLite 版本是否与数据库文件版本一致

例如,这是一个由 SQLite 版本 3+ 编写的数据库文件:

$ file foobar.db 
foobar.db: SQLite 3.x database, last written using SQLite version 3027002
Run Code Online (Sandbox Code Playgroud)

这里我还有 2 个版本的 sqlite:

$ sqlite -version
2.8.17
$ sqlite3 -version
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1
Run Code Online (Sandbox Code Playgroud)

显然事后看来,foobar.db使用 sqlite 版本 2 打开将会失败,并产生相同的错误消息:

$ sqlite foobar.db 
Unable to open database "foobar.db": file is encrypted or is not a database
Run Code Online (Sandbox Code Playgroud)

但使用正确的版本一切都很好:

$ sqlite3 foobar.db
SQLite version 3.27.2 2019-02-25 16:06:06
Enter ".help" for usage hints.
sqlite> 
sqlite> .databases 
main: /tmp/foobar.db
sqlite> 
Run Code Online (Sandbox Code Playgroud)

该错误消息包罗万象,仅表示无法识别文件格式。


CL.*_*CL. 0

您的数据库未加密(这只是错误消息中的两个选项之一)。

您的数据恢复工具没有恢复正确的数据;文件中的内容是其他内容。

您必须从备份中恢复数据库文件。