使用php更新Sqlite表产生错误8



我正在运行一个LightSail亚马逊服务器与Lamp PHP 8.1实例,我需要一个轻量级的DB为我的服务器,所以我已经安装了SQLite。我已经创建了一个数据库,并试图插入到一个表从php代码

$db = new SQLite3('/home/bitnami/bot.db', SQLITE3_OPEN_READWRITE);
$sql = 'insert into users values("' . $id . '", "' . $platform . '", "' . $name . '", "' . $chatId . '", false)';
logLine($sql);
$db->exec($sql);

$err = $db-> LastErrorCode();
logLine("Error code: " . $err);

由于一些完全不清楚的原因,我得到错误8:试图写一个只读数据库。

我尝试了以下操作,但没有成功:

  • 给db文件777权限
  • 将db文件的所有者更改为运行apache(守护进程)的用户
  • 将所有者更改为root
  • 萨满舞蹈

当我用php cli从控制台运行相同的代码时,它工作了!但是如果它在apache下运行,它就不会!

您需要在WAL中设置Pragma日志模式以使用读写函数

$db = new SQLite3('yourfile.db');
$db->query("PRAGMA journal_mode=WAL");

最新更新