[前脚本:这是一个自我回答的问题,您无需费心回答]

我遇到了一个奇怪的配置问题,在specific PHP.net page或StackOverflow的任何地方都没有记录。

问题

在Windows上打开现有的sqlite数据库时,相同的错误始终显示:
SQLSTATE[HY000] [14] Unable To Open Database File
尽管执行的代码是从手册中复制/粘贴的:

<?php
/* Connect to an ODBC database using driver invocation */
$dsn = 'sqlite:/full/path/to/db';
$user = 'dbuser';
$password = 'dbpass';

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

?>

我无法打开此数据库,因为我在谷歌搜索时尝试了各种DSN:
$dsn = 'sqlite:/c:\\full\\path\\to\\db'; // --FAILED--$dsn = 'sqlite://c:/full/path/to/db'; // --FAILED--

最佳答案

解决方案

注意DSN sqlite:/中的简单斜杠吗?放下它!

像这样编写您的DSN:
sqlite:name.db

这适用于相对绝对路径,因此:
$dsn = 'sqlite:c:\full\path\to\name.db'; // --WORKS--$dsn = 'sqlite:..\data\name.db'; // --WORKS--$dsn = 'sqlite:name.db'; // --WORKS--
希望它将为您节省一些时间!

09-20 23:26