2013-01-23 170 views
1

我有一个非常简单的SQLite数据库,我需要从另一台服务器读取/写入。PDO连接到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和数据库本身是正确的。 那么访问跨服务器有什么限制吗?任何人都知道要解决这个问题?

非常感谢。

回答

2

没有像'SQLite服务器'这样的事情。它只以文件的形式存在。
但HTTP协议中没有文件,只有URI。
所以,这是必不可少的。

为了能够做远程调用你有3个选择

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

或选项5,将SQLite文件放在网络文件系统上。当然,这会导致各种各样的欢闹锁定和并发问题。 – Charles