Как подключиться к нескольким базам данных в Drupal - PullRequest
0 голосов
/ 06 февраля 2011

Я хочу развернуть openpublish на 5 многосайтовых серверах с большим трафиком на сайте и хочу использовать несколько серверов баз данных, но некоторые таблицы должны быть общими.Как подключиться к нескольким базам данных в Drupal, сделав общий доступ к таблицам 'users', 'session' и 'role'.

Ответы [ 3 ]

3 голосов
/ 06 февраля 2011

Чтобы разрешить несколько подключений к базе данных, преобразуйте $db_url в массив.

<?php
$db_url['default'] = 'mysql://drupal:drupal@localhost/drupal';
$db_url['mydb'] = 'mysql://user:pwd@localhost/anotherdb';
$db_url['db3'] = 'mysql://user:pwd@localhost/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');
?>

Но убедитесь, что все базы данных одного типа.

1 голос
/ 06 февраля 2011

В документации по совместному использованию таблиц говорится, что для совместного использования таблиц необходимо использовать одну базу данных, но я сделал это с несколькими базами данных на одном сервере.Я сделал это, поместив имя базы данных перед префиксом, а затем добавив точку.Поэтому, если ваша база данных по умолчанию называется drupal, а вторая база данных называется second_drupal, префиксы будут выглядеть так в settings.php:

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

(Обратите внимание, что не имеет значенияВы называете свою базу данных по умолчанию, так как это база данных по умолчанию, вам не нужно ссылаться на нее по имени в переменной $db_prefix, если она правильно настроена в файле settings.php.)

http://thedrupalblog.com/setting-multi-site-drupal-6-installation-shared-databases-and-single-sign имеет некоторые инструкции, но я думаю, что все еще предполагается, что один сервер базы данных.

0 голосов
/ 21 марта 2015

Сумма раз, когда я хотел получить данные из другой базы данных в 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; 
 }
...