2013-01-23 168 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