2010-11-08 62 views
1

我的应用程序使用的数据存储的SQLite。一切正常,但有一天有人破坏了数据文件,现在应用程序无法读取它。我不明白什么是错的,但有两件事我知道:
1)$result = sqlite_query($query,$db_path);
当此代码与旧备份(其中,顺便说一句,不包含所有数据)运行时,一切都很好,$result成为正确的值。当它被破坏的文件运行时,$result变得null
2)我在记事本中打开了这个损坏的SQLite文件,它似乎很好(它的结构就像旧结构一样)。维修/从损坏的SQLite文件中获取数据

我唯一的想法就是解析损坏的文件。我在哪里可以获得SQLite文件规范?或者,也许有另一种方式?

+0

如果您使用的是Linux或访问到Linux然后安装“sqliteman”,并在其打开数据库文件和损坏的数据库文件手动发出查询。 – Ibrahim 2010-11-08 15:38:36

+0

不幸的是,我使用Windows ... – Sergey 2010-11-08 16:49:55

回答

0

有一个名为sqlite3的命令行工具,允许您管理SQLite数据库。 一旦开始,使用“帮助”查看可用的选项。我还没有尝试过对损坏的数据库,所以我不知道它会表现如何。

一个想法是从sqlite数据库中查看架构和转储表,一次一个,直到您点击存储在文件损坏部分中的表。

cristi:FoodBrowser diciu$ sqlite3 FoodBrowser.sql 
SQLite version 3.6.12 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 
sqlite> .help 
.backup ?DB? FILE  Backup DB (default "main") to FILE 
[..] 
+0

我试过一次。它基本上创建了所有有效信息的数据库副本。所以可能会缺少信息。 – 2010-11-08 15:23:35

+0

损坏的数据库是SQLite 2.1格式。我发现这种工具只适用于SQLite 3.有2.1版本吗? – Sergey 2010-11-09 15:13:31