Arbeiten mit der Datenbank in Drupal 7 – Lektion 2 – Datenbank-Konfiguration
Das Hauptmittel zur Definition der Verbindung mit der Datenbank ist das Array $databases
in der Datei settings.php
. Wie der Name schon sagt, erlaubt $databases
die Definition mehrerer Datenbankverbindungen. Es unterstützt auch die Definition mehrerer Ziele. Die Verbindung wird nicht geöffnet (das Verbindungsobjekt wird nicht erstellt), bis ein Teil des Codes zum ersten Mal eine Anfrage an die Datenbank ausführt.
Verbindungsschlüssel
Der Verbindungsschlüssel ist ein eindeutiger Identifikator, der einer Datenbankverbindung zugewiesen wird. Der Verbindungsschlüssel muss für die Seite eindeutig sein und sollte standardmäßig für die primäre Datenbank gesetzt sein. Bei den meisten Seiten gibt es nur eine Verbindung.
Verbindungsziel
Diese Verbindung kann ein oder mehrere Ziele haben. Ein Ziel ist eine optionale Behandlung der Datenbank, die verwendet wird, wenn die Datenbank verfügbar ist. Wenn das angefragte Ziel nicht definiert ist, wird das System „still“ auf das Standardziel zugreifen, das immer definiert sein sollte.
Primär werden Ziele für Master/Slave-Replikation verwendet. Standardmäßig ist das Ziel der Haupt-SQL-Server. Ein oder mehrere „Slave“-Ziele können ebenfalls definiert sein. Anfragen mit markiertem Ziel versuchen, den zusätzlichen SQL-Server zu verwenden, falls möglich. Wenn dies funktioniert, wird der Slave-Server verwendet, andernfalls der Standardserver, also der Hauptserver.
Syntax von $databases
Das Array $databases
ist ein verschachteltes Array mit drei Ebenen. Die erste Ebene definiert den Verbindungsschlüssel. Die zweite definiert das Verbindungsziel. Der Wert für jedes Ziel ist die Verbindungsinformation für das Schlüssel/Ziel-Paar. Hier ein Beispiel zur Erklärung:
<?php $databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupaldb', 'username' => 'username', 'password' => 'secret', 'host' => 'localhost', ); ?>
Das Array $databases
definiert eine einzelne Verbindung mit dem Schlüssel „default“ und dem Ziel „default“. Diese Verbindung nutzt eine MySQL-Datenbank („driver“ => „mysql“) auf dem Server localhost, für die Datenbank drupaldb mit dem Benutzer „username“ und dem Passwort „secret“. Normalerweise ist dies die Konfiguration der meisten Seiten.
Für die Master/Slave-Konfiguration wird folgende Definition verwendet:
<?php $databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupaldb1', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver1', ); $databases['default']['slave'][] = array( 'driver' => 'mysql', 'database' => 'drupaldb2', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver2', ); $databases['default']['slave'][] = array( 'driver' => 'mysql', 'database' => 'drupaldb3', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver3', ); ?>
Diese Konfiguration stellt einen „default“-Server und zwei „slave“-Server bereit. Beachten Sie, dass der Schlüssel „slave“ ein Array ist. Wenn ein Ziel als Array von Verbindungsinformationen definiert wird, wird für jede Seitenanfrage zufällig ein bestimmter Server gewählt. Das bedeutet, dass bei einer Seite alle Anfragen sowohl an dbserver2 als auch an dbserver3 gesendet werden können.
<?php $databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupaldb1', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver1', ); $databases['extra']['default'] = array( 'driver' => 'sqlite', 'database' => 'files/extradb.sqlite', ); ?>
Diese Konfiguration definiert eine Haupt-Drupal-Datenbank und eine zusätzliche Datenbank mit dem Schlüssel „extra“, die SQLite verwendet. Beachten Sie, dass die Verbindungsinformationen für SQLite sich in der Struktur von MySQL unterscheiden. Jeder Treiber kann eine unterschiedliche Konfiguration haben, die definiert, wie er genutzt wird. Denken Sie daran, egal wie viele Verbindungen definiert sind, Drupal wird keine Verbindung zu anderen Datenbanken öffnen, solange die Standard-Datenbank verwendet wird.
Drupal 7 benötigt PDO
Die PHP-PDO-Bibliothek ist jetzt für Drupal erforderlich, daher müssen Sie einen Hosting-Anbieter mit PDO-Unterstützung wählen, um Drupal auszuführen, oder die entsprechende Bibliothek auf Ihrem Server installieren.