Das Contao Camp 2020 in Hamburg. LEIDER ABGESAGT!
Ergebnis 1 bis 18 von 18

Thema: Contao Datenbank auf anderem Host

  1. #1
    Contao-Nutzer
    Registriert seit
    06.03.2020.
    Ort
    Oberösterreich
    Beiträge
    31

    Standard Contao Datenbank auf anderem Host

    Hallo,

    ich möchte fragen, ob es prinzipiell möglich ist, die contao Datenbank auf einem anderen Rechner zu betreiben als das contao Projekt.

    Eigentlich hätte ich gedacht, dass das ohne Probleme gehen sollte und habe in die localconfig.php die entsprechenden Daten, für die Remote Datenbank, eingegeben.

    Aber ich sehe, dass es nicht funktioniert. Die Fehlermeldung schaut sehr nach Datenbankproblem aus:
    HTML-Code:
    Warning: mysqli::real_escape_string(): Couldn't fetch mysqli in .../system/drivers/DB_Mysqli.php on line 93
    
    #0 [internal function]: __error(2, 'mysqli::real_es...', '/home/xxxx/...', 93, Array)
    #1 .../system/drivers/DB_Mysqli.php(93): mysqli->real_escape_string('en,de')
    #2 .../system/libraries/Database.php(206): DB_Mysqli->find_in_set('language', 'en,de')
    #3 .../system/modules/frontend/Frontend.php(131): Database->findInSet('language', Array)
    #4 .../index.php(82): Frontend->getRootIdFromUrl()
    #5 .../index.php(319): Index->run()
    #6 {main}
    Gibt es da noch eine Schraube, an der man drehen muss?

    Ich habe natürlich den Zugriff auf die Datenbank von meinem Home Rechner über die Linux Konsole überprüft und konnte mich einloggen in die Datenbank und die Tabellen anzeigen.
    HTML-Code:
    mysql -h hostname -u berechtigterUser -p
    Vielen Dank im Voraus für jeden Kommentar oder Tipp.

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    23.098
    Partner-ID
    10107
    User beschenken
    Wunschliste

    Standard

    Prinzipiell ist das möglich, ja.

  3. #3
    Contao-Urgestein
    Registriert seit
    22.10.2013.
    Beiträge
    8.293
    User beschenken
    Wunschliste

    Standard

    Ist bei vielen Hostern sogar übliche Praxis.

  4. #4
    Contao-Nutzer
    Registriert seit
    06.03.2020.
    Ort
    Oberösterreich
    Beiträge
    31

    Standard

    OK, also dass es eigentlich gehen müsste, das ist nun klar.

    Dass es bei mir nicht geht, muss daher einen speziellen Grund haben.

    Folgende Fehlermeldungen erscheinen (nach geraumer Zeit):

    HTML-Code:
    Warning: mysqli::real_escape_string(): Couldn't fetch mysqli in .../system/drivers/DB_Mysqli.php on line 93
    
    #0 [internal function]: __error(2, 'mysqli::real_es...', '.../...', 93, Array)
    #1 .../system/drivers/DB_Mysqli.php(93): mysqli->real_escape_string('en,de')
    #2 .../system/libraries/Database.php(206): DB_Mysqli->find_in_set('language', 'en,de')
    #3 .../system/modules/frontend/Frontend.php(131): Database->findInSet('language', Array)
    #4 .../index.php(82): Frontend->getRootIdFromUrl()
    #5 .../index.php(319): Index->run()
    #6 {main}
    
    
    Warning: mysqli::real_escape_string(): Couldn't fetch mysqli in .../system/drivers/DB_Mysqli.php on line 309
    
    #0 [internal function]: __error(2, 'mysqli::real_es...', '.../...', 309, Array)
    #1 .../system/drivers/DB_Mysqli.php(309): mysqli->real_escape_string('contao2.frecs.i...')
    #2 .../system/libraries/Database.php(738): DB_Mysqli_Statement->string_escape('contao2.frecs.i...')
    #3 .../system/libraries/Database.php(715): Database_Statement->escapeParams(Array)
    #4 .../system/libraries/Database.php(627): Database_Statement->replaceWildcards(Array)
    #5 .../system/modules/frontend/Frontend.php(133): Database_Statement->execute('contao2.fr...')
    #6 .../index.php(82): Frontend->getRootIdFromUrl()
    #7 .../index.php(319): Index->run()
    #8 {main}
    
    Fatal error: Uncaught exception Exception with message Query error: (SELECT id, dns, language, fallback FROM tl_page WHERE type='root' AND (dns='' OR dns='') AND (language IN('de','en') OR fallback=1) AND (start='' OR start<1584650237) AND (stop='' OR stop>1584650237) AND published=1 ORDER BY dns DESC, FIND_IN_SET(language, '') DESC, sorting LIMIT 0,1) thrown in .../system/libraries/Database.php on line 689
    
    #0 .../system/libraries/Database.php(636): Database_Statement->query()
    #1 .../system/modules/frontend/Frontend.php(133): Database_Statement->execute('contao2.fr...')
    #2 .../index.php(82): Frontend->getRootIdFromUrl()
    #3 .../index.php(319): Index->run()
    #4 {main}
    Kann da vielleicht jemand herauslesen, wo es eigentlich hakt?

  5. #5
    Contao-Urgestein
    Registriert seit
    22.10.2013.
    Beiträge
    8.293
    User beschenken
    Wunschliste

    Standard

    Wenn Datenbankabfragen manchmal bzw meistens funktionieren und nur manchmal der Fehler auftaucht, tippe ich auf ein Problem mit der Antwortzeit der Datenbank. Oder der Datenbankserver ist generell unzuverlässig. Wenn die Datenbank, übertrieben, irgendwo in Timbuktu gehostet wird, dann muss halt jede Abfrage erst mal dort ankommen, dort bearbeitet werden und das Ergebnis zurückgeschickt werden. Das kann dann schon mal ne Weile dauern, im Extremfall über 100ms allein schon für die Übertragung - auf Grund der Entfernung und der Lichtgeschwindigkeit. Und da kommt dann noch die Bearbeitung der Abfrage dazu. Wenn Hoster die Datenbank auf einen anderen Server auslagern, dann steht der in der Regel relativ nahe am Webserver und ist sehr schnell über eine lokale Verbindung im selben Subnetz mit diesem verbunden. Da macht das dann eher nur 1-2ms zusätzlich aus im Vergleich zu einem MySQL-Server, der direkt auf dem Webserver läuft. Da brauchts auch keinen DNS-Server, die lokale IP wird der in der Hosts-Datei stehen haben, wenn nicht sowieso gleich die IP statt des Rechnernamens in den Datenbankeinstellungen angegeben ist.

  6. #6
    Contao-Nutzer
    Registriert seit
    06.03.2020.
    Ort
    Oberösterreich
    Beiträge
    31

    Standard

    Na ja, in Timbuktu ist der Server nicht.

    Es ist mein eigener Server, den ich bei greatnet.de gemietet habe und da läuft MySQL unter openSUSE 15.1.
    Der MySQL Server funktioniert seit Jahren ...

    Es ist wirklich sonderbar.
    Wenn ich das Installtool starte, kommt nach längerer Zeit - ca 1 Minute - die Meldung

    HTML-Code:
    Keine Verbindung zur Datenbank vorhanden!
    Bitte geben Sie nachfolgend Ihre Datenbank-Zugangsdaten ein.
    Ich sehe ein Formular mit genau den Verbindungsdaten, die in der localconfig.php stehen.

    Mit diesen Verbindungsdaten kann ich mich von jedem Rechner am MySQL Server einloggen ...
    Geändert von reburg (19.03.2020 um 22:37 Uhr)

  7. #7
    Contao-Urgestein
    Registriert seit
    22.10.2013.
    Beiträge
    8.293
    User beschenken
    Wunschliste

    Standard

    Ja, aber du hast halt einen Teil der Strecke die deine Daten zurücklegen müssen über das Internet laufen und nicht über lokal verlegte Kabel im Intranet. Das ist mit Sicherheit schon eine ganze Ecke langsamer. Wieviele Kerne hat denn der Server und sind das dedizierte Kerne? Und was muss der sonst noch alles machen?

  8. #8
    Contao-Fan Avatar von Ainschy
    Registriert seit
    24.06.2009.
    Ort
    Neuenburg am Rhein
    Beiträge
    566
    Partner-ID
    5666
    User beschenken
    Wunschliste

    Standard

    Ist der Port von Außen überhaupt erreichbar? Stichwort Firewall?

    Mal mit z.B. HeidiSQL checken.

  9. #9
    Contao-Nutzer
    Registriert seit
    06.03.2020.
    Ort
    Oberösterreich
    Beiträge
    31

    Standard

    Ich kann ja über die Linux Konsole auf die Datenbank zugreifen. Kann mich einloggen in die Datenbank und die Tabellen auflisten usw.

    Da geht alles ruck zuck.

  10. #10
    Contao-Nutzer
    Registriert seit
    06.03.2020.
    Ort
    Oberösterreich
    Beiträge
    31

    Standard

    Zitat Zitat von Ainschy Beitrag anzeigen
    Ist der Port von Außen überhaupt erreichbar? Stichwort Firewall?
    Der Port für MySQL ist offen, sonst könnte ich mich ja über die Linux Konsole nicht einloggen. Da geht alles perfekt, ohne jede Zeitverzögerung.

  11. #11
    Contao-Nutzer
    Registriert seit
    06.03.2020.
    Ort
    Oberösterreich
    Beiträge
    31

    Standard

    Zitat Zitat von tab Beitrag anzeigen
    Ja, aber du hast halt einen Teil der Strecke die deine Daten zurücklegen müssen über das Internet laufen und nicht über lokal verlegte Kabel im Intranet. Das ist mit Sicherheit schon eine ganze Ecke langsamer. Wieviele Kerne hat denn der Server und sind das dedizierte Kerne? Und was muss der sonst noch alles machen?
    Der Server muss schon einiges machen, HTTP z.B. und ist natürlich ein Billigprodukt, daher ein virtueller Server.

    Aber, wie schon erwähnt, auf der Konsole merke ich nicht die geringste Zeitverzögerung, wenn ich mich einlogge in die Datenbank.

  12. #12
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    1.947
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von reburg Beitrag anzeigen
    Der Port für MySQL ist offen, sonst könnte ich mich ja über die Linux Konsole nicht einloggen. Da geht alles perfekt, ohne jede Zeitverzögerung.
    Die Frage ist halt, ob auch auf dem Webserver die Kommunikation mit einen entfernten MySQL-Server unterstützt wird. Dass du dich von außen auf dem MySQL-Server einloggen kannst, sagt ja nur aus, dass der MySQL-Server von außen erreichbar ist, nicht das der Webserver dies unterstützt noch das beide Server miteinander kommunizieren können.

    Wie meistens, sollte der Provider bei solchen Fragen am ehestens die technische Expertise geben können.

  13. #13
    Contao-Nutzer
    Registriert seit
    06.03.2020.
    Ort
    Oberösterreich
    Beiträge
    31

    Standard

    Habe jetzt mit einer virtuellen Maschine das gleiche versucht:

    Contao läuft auf der VM.
    Die Datenbank befindet sich auf dem Hostsystem.
    Die Namensauflösung funktioniert über /etc/hosts.

    Hier meckert das Installtool nicht wegen der Datenbankverbindung.
    Dafür aber kann ich mich im Backend nicht einloggen - keine Fehlermeldung.

    Aber im Frontend erhalte ich eine Meldung, die interessant ist:
    HTML-Code:
    Fehler: Umleitungsfehler
    Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.
    Was soll das heißen?

  14. #14
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    23.098
    Partner-ID
    10107
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von reburg Beitrag anzeigen
    Der Port für MySQL ist offen, sonst könnte ich mich ja über die Linux Konsole nicht einloggen. Da geht alles perfekt, ohne jede Zeitverzögerung.
    Hast du das auch vom Webserver aus überprüft?

  15. #15
    Contao-Nutzer
    Registriert seit
    06.03.2020.
    Ort
    Oberösterreich
    Beiträge
    31

    Standard

    Habe leider keinen Shell Zugang auf diesem Webspace.
    Müsste man ein PHP Skript schreiben, das einen Datenbankzugriff auf die Remote Datenbank macht. Was anderes fällt mir da nicht ein.

  16. #16
    Contao-Urgestein
    Registriert seit
    22.10.2013.
    Beiträge
    8.293
    User beschenken
    Wunschliste

    Standard

    Über welche Konsole hast Du Dich dann eingeloggt ohne Shell-Zugang? Muss ja von dem Server aus, auf dem der Webserver läuft. Sonst sind das von vornherein zwei Paar Stiefel.

  17. #17
    Contao-Nutzer
    Registriert seit
    06.03.2020.
    Ort
    Oberösterreich
    Beiträge
    31

    Standard

    Zitat Zitat von tab Beitrag anzeigen
    Über welche Konsole hast Du Dich dann eingeloggt ohne Shell-Zugang? Muss ja von dem Server aus, auf dem der Webserver läuft. Sonst sind das von vornherein zwei Paar Stiefel.
    Ok, langsam sehe ich ein, dass da etwas nicht möglich ist, was ich einfach als selbstverständlich vorausgesetzt hatte.

    Ich habe jetzt auf dem Webspace ein kleines php-Skript deponiert, das eine Verbindung zum MySQL Server herstellt und die dort vorhandenen Datenbanken des Users auflistet.

    Rufe ich dieses Skrip auf, dann sehe ich, dass die Verbindung zur Datenbank nicht hergestellt werden kann.

    Rufe ich das gleiche PHP-Script auf meinem lokalen Webserver auf, so wird die Verbindung zu der externen Datenbank hergestellt und alles ist ok.

    Ich kann mir das also nur so erklären, dass der Webspace Provider das unterbindet ...

  18. #18
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    23.098
    Partner-ID
    10107
    User beschenken
    Wunschliste

    Standard

    Vielleicht sperrt der Hoster bloß Port 3306, dann könntest du probieren deinen eigenen MySQL Server unter einem anderen Port zu betreiben.

    Aber heißt das der andere MySQL Server befindet sich gar nicht im selben Netzwerk wie der Webserver? Das wird einerseits langsam werden und andererseits unsicher, da das Datenbank Passwort unverschlüsselt übertragen wird.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •