我有一个SQLite数据库的问题。
首先,我的数据库在某种情况下崩溃了。不管我试图用它做什么,都会显示:"数据库磁盘映像已损坏"。这可能是因为我正在将带有大量"\n"的巨大文本写入表中的两列。
于是我阅读了这里和其他网站上的一些主题,并想要转储数据库并重新创建它,但是它说类似于"该行过长(最大1000个字符)",现在我无法重新创建此错误。但奇怪的是,我使用3.19.3版本的sqlite3,并且我在另一个主题中读到,在以前的版本中,"\n"字符的问题得到了解决。
现在我的另一种方法是查看转储文件并使用正则表达式来清除所有这些文本。现在我的转储文件的大小从750 Mb减少到3.5 Mb。当我尝试从新的转储文件和旧文件(这个大文件)重新创建db时,结果是一个空文件。控制台没有提供任何类型的结果或错误信息。因此,我在下面发布了我在整个过程中的每一个步骤。
首先,我的数据库在某种情况下崩溃了。不管我试图用它做什么,都会显示:"数据库磁盘映像已损坏"。这可能是因为我正在将带有大量"\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文件。如我之前所提到的,没有出现错误,所以我不知道发生了什么。
请帮忙,我不知道该怎么办。