1

我有一个非常简单的 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 和数据库本身是正确的。那么访问跨服务器有限制吗?有人知道解决这个问题吗?

非常感谢。

4

1 回答 1

2

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

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

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