Drupal - connessione a diversi database per lo stesso sito web



traduzione di : http://drupal.org/node/18429
~~~~~~~~~~~~~~~~~~~~~~~~~~

Drupal puo' collegarsi a diversi database in maniera semplice ed elegante.

Come prima cosa, definisci le connessioni ai database editando la variabile $db_url all'interno del file di configurazione (settings.php per 4.6 o superiori, altrimenti conf.php). Per default, e' definita una sola connessione.


$db_url = 'mysql://drupal:drupal@localhost/drupal';

Per avere connessioni multiple al server database, occorre convertire $db_url in un array.


$db_url['default'] = 'mysql://drupal:drupal@localhost/drupal';
$db_url['mydb'] = 'mysql://user:pwd@localhost/anotherdb';
$db_url['db3'] = 'mysql://user:pwd@localhost/yetanotherdb';

Da ricordare che il database dove viene archiviata l'installazione deve essere segnato come connessione default.

A questo punto, per interrogare un database diverso da quello e' sufficiente rendere attivo il database desideratao ed eseguire le query necessarie


//cambia DB
db_set_active('mydb');
//esegui query
db_query('SELECT * FROM table_in_anotherdb');
//Torna al DB default
db_set_active('default');

Assicurati sempre di tornare al database predefinito (default) una volta completate le query al DB secondario, in modo che Drupal possa terminare in maniera pulita le operazioni sul DB alternativo

Nota: E' particolarmente importante tornare al DB default prima di eseguire chiamate a funzioni Drupal. Gli errori nel log degli errori con indicazioni del tipo "not being able to find the 'system' table " sono indicazioni che le chiamate alle funzioni Drupal sono state ricevute prima di tornare al DB default.

Questo funziona solo per databse dello stesso tipo.Esempio, il codice seguente NON Funziona.

// ... header of the settings.php file
$databases = array (
"default" => "mysql://user:pass@host/db",
"second" => "pgsql://user:pass@host/db"
);
// ...

Per maggiori informazioni sulle funzioni di connessione ai DB utilizzate da Drupal [Drupal Database Abstraction Layer functions ] sono disponibili all'indirizzo http://api.drupal.org/api/group/database.

Comments

Invia nuovo commento

  • Linee e paragrafi vanno a capo automaticamente.
  • Web page addresses and e-mail addresses turn into links automatically.

Maggiori informazioni sulle opzioni di formattazione.

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
7 + 12 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.