我正在运行一个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");