Hier und an anderen Orten wird viel über die Verwendung externer Datenbanken in Drupal diskutiert. Was ich daraus herausgefunden habe ist:
- Der beste Weg, um mit Daten in einer Datenbanktabelle zu arbeiten, ist die Verwendung des Moduls Ansichten. Ich habe das installiert und angefangen, es zu verwenden, und fand es großartig, mit einer Tabelle zu arbeiten, die ich der Datenbank der Site hinzugefügt habe.
- Die einfache Möglichkeit, Views dazu zu bringen, mit einer Tabelle zu arbeiten, die nicht von Drupal erstellt wurde, ist das Datenmodul. Dieses Modul behandelt jede Tabelle in der Site-Datenbank, die von Drupal nicht verwendet wird, als "verwaiste Tabelle" und ermöglicht die "Übernahme" auf Knopfdruck.
- Das Modul "Tabellenassistent" bietet anscheinend eine Möglichkeit, dies mit Tabellen zu tun, die sich nicht in der Datenbank der Site befinden. Dieses Modul ist jedoch für Drupal 7 nicht verfügbar.
- Die Datei "settings.php" im Abschnitt "Datenbankeinstellungen" enthält eine detaillierte Dokumentation zum Definieren zusätzlicher Datenbanken, mit denen die Site arbeiten kann. Wenn eine Datenbank auf diese Weise definiert wird, werden ihre Tabellen nicht in der Liste der verwaisten Tabellen im Datenmodul angezeigt.
Die Änderung, die ich an der Datenbankdefinition in der Datei "settings.php" einer meiner Websites vorgenommen habe, lautet:
$databases = array (
'default' => array ('default' => array (
'database' => 'db_local',
'username' => 'db_local',
'password' => '_________',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
), ),
'extra' => array ('default' => array (
'database' => 'db__extra',
'username' => 'db_admin',
'password' => '_________,
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
), ), );
Ich habe eine Tabelle, die ich in meiner Installation an mehreren Standorten an mehreren Standorten verwenden möchte. Dies bedeutet, dass ich die Tabelle in einer Datenbank haben muss, auf die jeder Standort zugreifen kann. Nach der Lektüre, die ich gemacht habe, sind meine Optionen dafür:
- Am besten, wenn es möglich ist: Finden Sie heraus, dass das Datenmodul Tabellen in der zusätzlichen Datenbank, die in "settings.php" definiert ist, erkennen kann, damit es sie übernehmen kann.
- Verwenden Sie Tabellenpräfixe, damit alle Sites eine Datenbank verwenden können.
- Das Modul „ Forena Reports “ schien genau das zu tun, was ich brauchte, aber als ich es installierte, konnte ich es nicht zum Laufen bringen. Ich habe das Problem 2475645 eingereicht und kann dort nicht viel mehr tun, es sei denn, es gibt eine Lösung für dieses Problem.
- Schreiben Sie mein eigenes Modul, um Views Zugriff auf die zusätzliche Datenbank zu gewähren, die in "settings.php" definiert ist.
- Installieren Sie Drupal 6 mit dem Tabellenassistenten und verwenden Sie diesen, damit Views meine externe Tabelle anzeigt. Nehmen Sie dann das Ergebnis und fügen Sie es in Drupal 7 ein. (Dies wurde in einigen Beiträgen vorgeschlagen.)
- Befolgen Sie die Anweisungen unter /drupal//a/3321/45991 , die mit der Installation eines Patches beginnen und anscheinend auch das Erstellen eines eigenen Moduls erfordern.
- Ich habe mir auch die Module Feeds, Feeds SQL, Views XML Backend und Migrate angesehen, aber keiner von ihnen gibt an, dass er eine externe Datenbank mit Views verbinden kann. Vermisse ich etwas Ist einer von ihnen die richtige Lösung?
Option 2 ist nicht praktikabel, da dies zu einer riesigen Datenbank mit Hunderten von Tabellen führen würde, deren Verwaltung sehr schwierig wäre. Ich habe große Fortschritte beim Einstieg in Drupal gemacht, bin aber der Aufgabe von 4, 5 oder 6 nicht gewachsen. Gibt es eine Möglichkeit, dass so etwas wie Option 1 funktioniert? Oder gibt es eine andere Möglichkeit, Views dazu zu bringen, mit einer Tabelle außerhalb der Site-Datenbank zu arbeiten, ohne mein eigenes Modul schreiben zu können?
Zwei zusätzliche Details: Die erste Tabelle, mit der ich arbeiten muss, ist ziemlich groß, über 6.000 Zeilen und ungefähr 20 Spalten. Es besteht keine Absicht, Besuchern der Site Zugriff auf die Datenbank zu gewähren, mit Ausnahme von Informationen, die für den Seiteninhalt daraus gezogen werden.
Danke für Ihre Hilfe.