2009-11-26 64 views
2

我最近將我的一個PHP應用程序從MySQL移植到SQLite,使其更容易管理。出於某種原因,我可以從PHP訪問sqlite數據庫,它的工作原理是完美的,但如果我嘗試用sqlitemanager或sqlite firefox插件等其他方法打開它,數據庫看起來就像是空白的,或者它不會打開它。sqlite數據庫將不會打開其他任何東西除了PHP

任何想法?

回答

2

Sqlite可用於(至少)兩個主要版本,2和3,它們是不兼容的。也許PHP和其他客戶端之間存在一些不匹配。例如。 sqlite_前綴函數使用過時的版本2,而Sqlite3是當前版本3的正確php類。

+0

或者使用php_pdo,它可以處理sqlite3和sqlite2格式。 '$ x = new PDO('sqlite:file.sql',..);'用於sqlite3或'$ x = new PDO('sqlite2:file.sql',...);'用於sqlite2。 – VolkerK 2009-11-26 10:04:52

0

默認情況下,PHP有舊的sqlite庫我相信,除非你使用PDO。也許它是一個數據庫版本問題。

0

似乎問題是PHP在PHP腳本的末尾沒有關閉數據庫。據我所知,PHP自動關閉腳本末尾的mySQL連接。它不會爲sqlite做同樣的事情。所以你不需要顯式地關閉mySQL連接,但是因爲Sqlite實際上是一個文件句柄,所以你需要明確地關閉它。有人可以證實這一點,所以我確定嗎?

0

PHP也自動關閉SQLite連接。 我同意mtvee,它可能是版本。 2和3之間有很大的區別.PDO可以同時執行這兩個操作,但默認情況下需要3個。您可以使用2和3以及單獨的類(無PDO):新的SqliteDatabase('db.sqlite2')和新的Sqlite3('db.sqlite3')。 我非常推薦使用PDO(和標準版本3)。