Sqlite3 PHP“数据库磁盘映像格式错误”

时间:2014-01-02 16:58:54

标签: php sqlite

我有一个sqlite db文件肯定没有损坏,因为我可以用SQLiteStudio打开它。 但是,当我尝试使用PHP动态打开它时,我在一些教程中找到了以下代码:

class MyDB extends SQLite3
{
  function __construct()
  {
     $this->open('../testDB');
  }
}
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }

$sql ="SELECT * from testTable";

$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) )
{
   echo "ID = ". $row['id'] . "\n";
   echo "NAME = ". $row['name'] ."\n\n";
}
echo "Operation done successfully\n";
$db->close();

我得到以下结果:

Opened database successfully 
Warning: SQLite3::query() [sqlite3.query]: Unable to prepare statement: 11, database     disk image is malformed in test.php on line 52

Fatal error: Call to a member function fetchArray() on a non-object in     test.php on line 53

我发现了一些像这样的线程,但没有一个有明确的答案。 有人可以帮帮我吗?提前谢谢!

2 个答案:

答案 0 :(得分:0)

我有同样的#34;数据库磁盘映像格式错误"错误,我用SQLiteStudio解决了它。 由于您已经拥有它,请打开文件,右键单击数据库并尝试使用Vacuum选项。完成此操作后,请尝试完整性检查。如果结果是“好”'那么你的问题就解决了。至少我是如何解决它的。真空重建整个数据库。

答案 1 :(得分:0)

我对小型SQLITE数据库已经存在同样的问题。

尝试使用:

$sql = "VACUUM";