PHP PDO sqlite:无法打开数据库
我用php开发了一个webapp,使用sqlite将数据存储在数据库中。正如在互联网上看到的,我使用PDO而不是SQLITE3类。我执行了internet上显示的所有步骤以避免此错误消息,但仍然显示: SQLSTATE[HY000][14]无法打开数据库文件 周期性任务每30秒运行一次,以获取表中的条目数。此任务由Javascript/Jquery触发。在普通的php文件上,我使用PDO没有任何问题。但是将它与Javascript/Jquery结合使用,我收到了上面的消息 我已经将整个路径和数据库设置为Web服务器的user/group和chmod 0777 我自己编写的数据库类被创建并存储在会话变量中,以避免在网页生命周期中创建和销毁 此函数连接到数据库(此函数和下一个函数在同一类中): 此函数正在执行查询: javascript/jquery函数运行良好,并使用setTimeoutfunction执行。 然而,我不知道如何防止或消除这个问题。我怎样才能解决这个问题 我的PHP ini文件包含以下关于sqlite和pdo的条目:PHP PDO sqlite:无法打开数据库,php,jquery,sqlite,pdo,Php,Jquery,Sqlite,Pdo,我用php开发了一个webapp,使用sqlite将数据存储在数据库中。正如在互联网上看到的,我使用PDO而不是SQLITE3类。我执行了internet上显示的所有步骤以避免此错误消息,但仍然显示: SQLSTATE[HY000][14]无法打开数据库文件 周期性任务每30秒运行一次,以获取表中的条目数。此任务由Javascript/Jquery触发。在普通的php文件上,我使用PDO没有任何问题。但是将它与Javascript/Jquery结合使用,我收到了上面的消息 我已经将整个路径和数据
[sqlite]
; http://php.net/sqlite.assoc-case
;sqlite.assoc_case = 0
[sqlite3]
;sqlite3.extension_dir =
[Pdo]
; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off"
; http://php.net/pdo-odbc.connection-pooling
;pdo_odbc.connection_pooling=strict
;pdo_odbc.db2_instance_name
[Pdo_mysql]
; If mysqlnd is used: Number of cache slots for the internal result set cache
; http://php.net/pdo_mysql.cache_size
pdo_mysql.cache_size=2000
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; http://php.net/pdo_mysql.default-socket
pdo_mysql.default_socket=
是否需要任何sqlite pdo设置?我解决了这个问题。不幸的是,错误消息令人困惑,因为PHP没有找到该文件。
请始终使用绝对路径,以避免出现此错误,即使权限、用户和组设置正确。很抱歉,我的答案完全错误,因此我已删除。你说得对,抱歉,连接必须关闭。是否有可能同时运行多个js?或者查询时间太长?不,事实上不是。在后台,每30秒只有一个javascript定期运行。我解决了这个问题。不幸的是,错误消息令人困惑。因为我没有使用绝对路径,PHP无法找到数据库文件。令人困惑但实际上有意义,这就是它无法读取它的原因。:)你应该添加你找到的解决方案作为答案,并接受它。同意,我试图
chown
到www数据,但我意识到我只是忘记了更改应用程序中指定的db路径,因为我已经从MacOS迁移到Ubuntu
function getNumberofEntriesinTable() {
try {
if (is_null($this->db)) {
if ($this->connectdb() < 0) {
return -1;
}
}
$statement = "select count(*) from table;";
$res = $this->db->query($statement);
$res = $res->fetch();
$res = $res['count(*)'];
$this->db = null;
return $res;
} catch (PDOException $e) {
syslog(LOG_ERROR,$e->getMessage());
return -1;
}
}
function getData(){
$.post("php/getdatafromdb.php",{action: 'getdata'},function(data){
console.log(data);
}
setTimeout(function () {getData();},30000);
}
[sqlite]
; http://php.net/sqlite.assoc-case
;sqlite.assoc_case = 0
[sqlite3]
;sqlite3.extension_dir =
[Pdo]
; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off"
; http://php.net/pdo-odbc.connection-pooling
;pdo_odbc.connection_pooling=strict
;pdo_odbc.db2_instance_name
[Pdo_mysql]
; If mysqlnd is used: Number of cache slots for the internal result set cache
; http://php.net/pdo_mysql.cache_size
pdo_mysql.cache_size=2000
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; http://php.net/pdo_mysql.default-socket
pdo_mysql.default_socket=