我尽可能阅读了网络上的所有帖子(不仅是在这个精彩的论坛中),我从 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/