【问题标题】:PDO connect to SQLite server on different serverPDO 连接到不同服务器上的 SQLite 服务器
【发布时间】:2013-01-06 20:29:52
【问题描述】:

我有一个非常简单的 SQLite 数据库,需要从不同的服务器读取/写入。

假设数据库存储在这里:http://www.abc.com/data/data.sqlite 我正在使用 PHP 从 http://www.xyz.com 访问它

所以我的第一次尝试如下:

$dbpath = "http://www.abc.com/data/data.sqlite";
$dbconn = "sqlite:$dbpath";
$db = new PDO($dbconn)

不好,我得到以下信息:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [14] unable to open database file'.........PDO->__construct('sqlite:http://w...') #1 {main} thrown

如果尝试将数据库复制到我正在访问的同一台服务器上:

$dbpath = "http://www.xyz.com/data/data.sqlite";
$dbconn = "sqlite:$dbpath";
$db = new PDO($dbconn)

我收到同样的信息。 只有当我在同一台服务器上给它一个相对路径时:

$dbpath = "../data/data.sqlite";

它确实有效。 我知道数据库 URL 和数据库本身是正确的。 那么访问跨服务器有限制吗?有人知道解决这个问题吗?

非常感谢。

【问题讨论】:

    标签: php sqlite pdo


    【解决方案1】:

    没有像“SQLite 服务器”这样的东西。它仅以文件的形式存在。
    但是 HTTP 协议中没有文件,只有 URI。
    所以,这是本质上的不兼容。

    为了能够进行远程呼叫,您有 3 个选择

    1. 开个玩笑:在每次 SELECT 查询之前在本地下载文件,并在更新后上传回来
    2. 建立一些代理脚本,接收查询并返回 json。
    3. 给自己一个真正的数据库服务器。
    4. 或者只是更改项目架构以消除远程访问的需要。

    【讨论】:

    • 或选项 5,将 SQLite 文件放在网络文件系统上。当然,这会导致各种有趣的锁定和并发问题......
    猜你喜欢
    • 2013-01-04
    • 2011-04-15
    • 2016-11-12
    • 2019-12-10
    • 1970-01-01
    • 2014-12-02
    • 2015-11-19
    • 1970-01-01
    • 2017-04-30
    相关资源
    最近更新 更多