【发布时间】:2015-12-12 19:59:16
【问题描述】:
我无法打开一个 sqlite 文件
在命令行中我得到这个:
#sqlite3 sms.db
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select * from message;
Error: file is encrypted or is not a database
错误不是在我连接时,而是在我运行查询时
检查文件让我明白了
# file sms.db
sms.db: SQLite 3.x database
所以应该不是版本问题——比如用 sqlite3 打开一个 sqlite2 文件
在 php 中我有这个:
try
{
/*** connect to SQLite database ***/
$db = new PDO("sqlite:path/sms.db");
echo "Handle has been created ...... <br><br>";
}
catch(PDOException $e)
{
echo $e->getMessage();
echo "<br><br>Database -- NOT -- loaded successfully .. ";
die( "<br><br>Query Closed !!! $error");
}
$result = $db->query('SELECT * from message') or var_dump($db->errorInfo());
得到这个(不是在连接时,而是在执行查询时)
array(3) { [0]=> string(5) "HY000" [1]=> int(26) [2]=> string(38) "file is encrypted or is not a database" }
我为 firefox 使用了 Sql 管理器扩展,在那里我可以毫无问题地打开文件(并且在没有任何加密或密码的情况下运行任何查询)。这对我来说真的很奇怪。在过去的几个小时里,我已经对此进行了搜索,但没有找到任何解决方案。任何帮助,将不胜感激。
我刚刚在windows上测试过,可以打开数据库了。我认为问题与 sqlite 驱动程序有关。
在 Windows 上,我有 SQLite Library 3.7.7.1 在我的 centos 服务器上,我有 SQLite Library 3.6.20
现在的问题是如何更新 php sqlite 扩展。我无法更新整个 php(可能会导致错误)
yum install php-pdo, yum install php5-sqlite3 等命令不起作用
【问题讨论】: