我有一个大问题...我正在使用 SQLite 开发一个桌面应用程序,但在复制/粘贴过程中我断电并且该过程终止,因此数据库丢失。但是,我找到了恢复它的方法,但是数据库是加密的。当我尝试使用打开连接时conn.Open();
我收到错误:“SQLITE 已加密或不是数据库”。如果我尝试使用 SQLite 的数据库浏览器打开它,它会要求我提供 SQLCipher 加密密码,因此在我看来数据丢失了。
有默认密码吗?
为什么会发生这种情况以及如何防止它再次发生?
我能做些什么?
提前致谢。
另请检查您正在“连接”的 SQLite 版本与数据库文件版本一致.
例如,这是一个由 SQLite 版本 3+ 编写的数据库文件:
$ file foobar.db
foobar.db: SQLite 3.x database, last written using SQLite version 3027002
这里我还有 2 个版本的 sqlite:
$ sqlite -version
2.8.17
$ sqlite3 -version
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1
显然事后看来,打开foobar.db
使用 sqlite 版本 2 将失败,并产生相同的错误消息:
$ sqlite foobar.db
Unable to open database "foobar.db": file is encrypted or is not a database
但使用正确的版本一切都很好:
$ 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>
该错误消息包罗万象,仅表示无法识别文件格式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)