2011-02-06 23 views
0

連接到多個數據庫我想在大約5 Drupal的多站點的高流量網站上部署openpublish和要使用多個數據庫服務器,但一些表應該共享。 如何通過對「用戶」,「會議」和「角色」表使共享中的Drupal連接到多個數據庫。如何內的Drupal

回答

3

爲了允許多個數據庫連接,轉換到$db_url的陣列。

<?php 
$db_url['default'] = 'mysql://drupal:[email protected]/drupal'; 
$db_url['mydb'] = 'mysql://user:[email protected]/anotherdb'; 
$db_url['db3'] = 'mysql://user:[email protected]/yetanotherdb'; 
?> 

要查詢不同的數據庫,只需設置它通過引用鍵名稱爲活動。

<?php 
db_set_active('mydb'); 

db_query('SELECT * FROM table_in_anotherdb'); 

//Switch back to the default connection when finished. 
db_set_active('default'); 
?> 

但是確保所有的數據庫都是同一類型的。

+0

謝謝。 'user'表是 – 2011-02-06 14:41:50

1

documentation on sharing tables表示您必須使用單個數據庫共享表,但我已經在同一臺服務器上使用多個數據庫完成了這項工作。我已經通過將數據庫名稱放在前綴之前,然後添加一個點來完成此操作。所以,如果您的默認數據庫被稱爲「Drupal的,和你的第二個數據庫被稱爲「second_drupal」,前綴應該是這樣的settings.php中:

$db_prefix = array(
    "default" => "slave1_", // the prefix for tables that are not shared. 
    "users" => "second_drupal.master_", 
... 

(請注意,這不要緊,你叫什麼您的默認數據庫,因爲它是默認數據庫,所以只要它在settings.php文件中正確設置,則無需在$db_prefix變量中通過名稱引用它。)

http://thedrupalblog.com/setting-multi-site-drupal-6-installation-shared-databases-and-single-sign有一些說明,但我認爲這仍然假設一個數據庫服務器。

0

點心的時候,我想檢索在Drupal其他數據庫中的數據,然後,我創建了選擇的主題文件夾的功能template.php文件中

connect_to_database($un, $pass, $db, $insert) 

需要數據庫用戶名的四個參數,密碼,數據庫名稱內部,而去年是查詢

function connect_to_database($username,$password,$database,$query){ 
    $database_info = array(
     'host' => 'hosname', 
     'database' => $database, 
     'username' => $username, 
     'password' => $password, 
     'driver' => 'mysql' 
); 
    Database::addConnectionInfo('coreapp', 'default', $database_info); 
    db_set_active('newcon'); 
    $q = db_query($query); 
    db_set_active('default'); 
    return $q; 
}