Sqlite3 PHP "database disk image is malformed"



我有一个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 successfullyn";
   }
$sql ="SELECT * from testTable";
$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) )
{
   echo "ID = ". $row['id'] . "n";
   echo "NAME = ". $row['name'] ."nn";
}
echo "Operation done successfullyn";
$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

我找到了一些类似的线程,但没有一个有明确的答案。有人可以在这里帮助我吗?提前感谢!

我已经在小型SQLITE db上遇到了同样的问题。

尝试使用:

$sql = "VACUUM";
$db->query($sql); 

我遇到了同样的"数据库磁盘映像格式不正确"错误,我使用 SQLiteStudio 解决了它。由于您已经拥有它,请打开该文件,右键单击数据库并尝试 真空 选项。完成此操作后,请尝试完整性检查。如果结果为"确定",则您的问题已解决。至少我是这样解决的。Vacuum 会重建整个数据库。

相关内容

最新更新