2012-09-04 197 views
1

我想在Linux/Apache服务器上使用PHP & sqlite实现一个简单的数据库。使用PDO写入SQLite数据库

我可以很容易地阅读,但我不能执行任何UPDATE,DELETE或INSERT操作。致命错误我得到的是:

General error: 5 database is locked 

举个简单的例子:

$pdo=new PDO('sqlite:test.sqlite'); 
$pdo->exec("INSERT INTO menus(id,name,description) VALUES(6,'test','this is a test')"); 

这也是在等待很长一段时间(约一分钟),然后报告上述错误。

我已经阅读了很多建议,其中许多建议数据库或其包含的文件夹应该是可写的。他们是。 (或者是,我让它们成为世界上可写的测试用例,并且在失败时使它们恢复更合理的权限。)

我没有任何困难使用其他技术写入数据库,例如Linux中的sqlite3命令和SQLite管理器插件Firefox浏览器。

我会欢迎任何有关如何使这项工作的意见。

+0

为了澄清,您可以使用另一个程序向此数据库写入数据,而PDO将其报告为锁定? – Brad

+0

没错。我已经检查过没有其他进程正在打开数据库。马克 – Manngo

+0

user1413856,这是离奇的!进入这种领域 - 并不是每天都会发生,您使用的是什么版本的PHP?您使用的PDO驱动程序的版本(如果有)?如果你建立一个新的干净的数据库(没有数据,单个表)并且尝试会发生什么? – Brad

回答

1

请尝试给数据库文件一个777权限,然后重试。我怀疑它与权限有关,因为你可以使用sqlite3程序修改数据库。

如果失败,请尝试查看此question的答案。

+1

试过了,权限为660(不需要赋予执行权限)。我也试过对包含的目录777权限。我已经看过另一个参考文献,但fuser和lsof显示没有其他用户打开数据库。 - 马克 – Manngo