php - 是的,又是一个 SQLSTATE[HY000] [14]

标签 php linux sqlite

我尽可能阅读了网络上的所有帖子(不仅是在这个精彩的论坛中),我从 5 年前开始使用 SQLite,但我仍然有这个“bug”(我不知道它是如何命名的):SQLSTATE[HY000] [14]

  • 是的,我的文件夹是可写的
  • 是的,这个 sqlite 文件是可写的
  • 是,用户和组设置为 www-data(服务器用户)
  • 是的,我已经设置了 sqlite 并在同一台服务器上使用它(所以不是配置问题)

那么这是怎么回事?

ls:

user@host:/folder/where/is/the/site$ ls -lha db_folder/
total 36K
drwxrwxr-x 3 www-data www-data 4.0K May 10 06:15 .
drwxr-xr-x 3 www-data www-data 4.0K May 10 06:34 ..
-rwxrwxrwx 1 www-data www-data  36K May 10 05:22 db.sqlite

提前致谢。

编辑:我的 php 代码,即使它对我来说不是很具体:

$db = new PDO('sqlite:dbname=./db_folder/db_file.sqlite', '', '', array(PDO::ATTR_PERSISTENT => true));
$articles = $db->query('SELECT * FROM articles ORDER BY name')->fetchAll();

最佳答案

当进程写入时,sqlite 文件会被锁定。请参阅有关此的 sqlite 文档 here .

The RESERVED lock signals that the process intends to write to the database at some point in the future. Only one process at a time can hold a RESERVED lock

尝试在写入后关闭 sqlite 数据库,因为您的脚本可能会在每次运行时尝试重新打开已打开的 sqlite 文件。

关于php - 是的,又是一个 SQLSTATE[HY000] [14],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50271747/

相关文章:

c - 无法理解以下函数声明

linux - 将目录树符号链接(symbolic link)到一个目录

c# - 如何在 C# 中与本地数据库同步时避免远程数据库中的重复

sqlite - 使用 SQL 'With' 子句时出错

mysql - 将数据从旧数据库转储导入(填充)到新数据库 - Rails

javascript - Fusion Table 与 Postgres with PHP

php - 如何使用 Google Sheets API v4 通过 PHP 在电子表格中创建新工作表或标签

php - 我应该在每次请求时动态生成每个缩略图,还是将它们存储在图像上传时?

php - SQL - 选择限制失败

c - 如何在 Linux 中重新绑定(bind) udp 套接字