【发布时间】:2017-11-20 00:41:19
【问题描述】:
我的 sqlite 数据库有问题。
首先,我的数据库以某种方式崩溃了,无论我试图用它做什么,它都会显示:“数据库磁盘映像格式错误”。这可能是因为我正在将包含大量“\n”的大量文本写入表格的两列。
所以我在这里和其他网站上阅读了一些主题,我想转储数据库并重新创建它,但它说“行太长(最多 1000 个字符)” - 现在我无法重新创建这个错误。但奇怪的是我使用的是 3.19.3 版本的 sqlite3,我在另一个线程上看到,在以前的版本中,“\n”字符的问题已经解决了。
现在我的另一种方法是查看转储文件并使用正则表达式来删除所有这些文本。现在我的转储文件的大小从 750 Mb 减少到 3,5 Mb。当我试图从新的转储文件和旧的(这个大的)重新创建 db 时,结果是一个空文件。控制台不会为我提供任何类型的结果或错误。所以下面我将发布我在这个过程中的每一步。
sqlite3> .open testDatabase.sqlite
sqlite3> .mode insert
sqlite3> .output dump.sql
sqlite3> .exit
mv testDatabase.sqlite corruptDatabase.sqlite
sqlite3> .open testDatabase.sqlite
sqlite3> .read dump.sql
或
*gets rid of huge text values*
sqlite3> .open testDatabase.sqlite
sqlite3> .read small_dump.sql
两者都会导致一个空的 testDatabase.sqlite 文件。正如我之前提到的,没有错误,所以我不知道发生了什么。
请帮忙,我不知道该怎么办。
【问题讨论】:
-
“空文件”是指0字节吗?
-
是的,完全正确。在此过程中会创建带有 *.journal 扩展名的文件,但随后会自动删除。
-
如果没有收到错误消息,这应该是不可能的。
-
那么我有可能在我的 CLI 中打开了某种“静音”模式吗?我是从官方 SQLite 页面下载的。