sqlite数据库赢得';我不能用PHP以外的任何东西打开

sqlite数据库赢得';我不能用PHP以外的任何东西打开,php,sqlite,Php,Sqlite,我最近将我的一个PHP应用程序从MySQL移植到SQLite,以便于管理。出于某种原因,我可以从PHP访问sqlite数据库,它工作得很好,但是如果我尝试用其他东西打开它,比如SQLItemManager或sqlite firefox插件,数据库看起来是空的,或者它不会打开它 有什么想法吗?我相信php默认使用旧的sqlite库,除非您使用PDO。可能是数据库版本的问题。Sqlite有(至少)两个不兼容的主要版本2和3。也许php和其他客户端之间存在一些不匹配。例如,sqlite\ucode>前

我最近将我的一个PHP应用程序从MySQL移植到SQLite,以便于管理。出于某种原因,我可以从PHP访问sqlite数据库,它工作得很好,但是如果我尝试用其他东西打开它,比如SQLItemManager或sqlite firefox插件,数据库看起来是空的,或者它不会打开它


有什么想法吗?

我相信php默认使用旧的sqlite库,除非您使用PDO。可能是数据库版本的问题。

Sqlite有(至少)两个不兼容的主要版本2和3。也许php和其他客户端之间存在一些不匹配。例如,
sqlite\ucode>前缀函数使用的是过时的版本2,而对于当前的版本3,它是合适的php类。

问题似乎是php没有在php脚本结束时关闭数据库。据我所知,PHP会在脚本结束时自动关闭mySQL连接。它对sqlite的作用不同。因此,不需要显式关闭mySQL连接,但因为Sqlite实际上是一个文件句柄,所以需要显式关闭它。有人能确认一下吗?我确信PHP也会自动关闭SQLite连接。 我同意mtvee的观点,它可能就是这个版本。2和3之间有很大的区别。PDO可以同时做这两件事,但默认值为3。您也可以将2和3与单独的类(不带PDO)一起使用:新的SqliteDatabase('db.sqlite2')和新的Sqlite3('db.Sqlite3')。
我非常推荐使用PDO(以及标准版本3)。

或者使用php_PDO,它可以处理sqlite3和sqlite2格式。
$x=newpdo('sqlite:file.sql',…)或
$x=newpdo('sqlite2:file.sql',…)用于sqlite2。