2010-11-08 63 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