尝试使用简单的PHP / Zend Framework设置来创建SQLite数据库并对其进行操作。
<?php
require_once("Zend/Db.php"); // Zend framework
$db = Zend_Db::factory('Pdo_Sqlite', array("dbname" => "./test.sqlite3"));
$sql = "CREATE TABLE IF NOT EXISTS ".$db->quoteIdentifier("configs")." (".$db->quoteIdentifier("name")." TEXT NOT NULL PRIMARY KEY, ".$db->quoteIdentifier("value")." TEXT NOT NULL);";
echo $sql;
$db->query($sql);
SQL回显为“CREATE TABLE IF NOT EXISTS "configs" ("name" TEXT NOT NULL PRIMARY KEY, "value" TEXT NOT NULL);
”,看起来不错。
但是我收到一条带有'SQLSTATE [HY000]消息的'Zend_Db_Statement_Exception
':一般错误:14无法打开数据库文件'。我尝试取消“dbname
”变量上的前导“./”,并确保PHP文件所在的文件夹具有对每个人的写入权限。我甚至尝试使用“touch test.sqlite3
”创建文件,并确保每个人都可以写入。
这是使用PHP v5.2.10
答案 0 :(得分:4)
您的代码在这里工作(在Windows上)。所以array("dbname" => "./test.sqlite3")
语法不是问题。和其他人一样,我认为这是一个许可问题。
一些想法:
strace
您的脚本(strace php test.php
)并检查输出是否有权限错误。./test.sqlite3
的目录必须是运行php的用户可读写的。 不足以具有可读写test.sqlite3
,因为sqlite还会在此目录中读取和写入临时test.sqlite3-journal
文件。确保它是。pdo
和pdo_sqlite
扩展名(检查phpinfo()
的输出)。另外,看看系统和php捆绑的sqlite libs之间没有冲突。