Ergebnis 1 bis 10 von 10

Thema: Datenbank verloren/geändert: Aufruf von install.php nicht möglich

  1. #1
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.116
    Partner-ID
    10107

    Standard Datenbank verloren/geändert: Aufruf von install.php nicht möglich

    Folgendes Szenario:
    • Contao 3.2.4 Installation (passiert wohl in Contao 3.x, evt. auch in Contao 2.x)
    • syncCto Extension installiert
    • Datenbank geht "verloren", Zugang oder Server Adresse ändert sich etc.
    • Man möchte die install.php aufrufen, um die neue Datenbank Verbindung zu konfigurieren bzw. um die Datenbank wieder mit den Tables zu befüllen, damit man wieder das Backend aufrufen und bspw. über syncCto ein Backup einspielen kann

    Die install.php kann in so einem Szenario aber nicht aufgerufen werden, man bekommt dabei folgende Fehler:
    Code:
    Warning: mysqli::mysqli(): (HY000/1049): Unknown database 'foo' in [...]\system\modules\core\library\Contao\Database\Mysqli.php on line 47
    
    #0 [internal function]: __error(2, 'mysqli::mysqli(...', 'C:\xampp\htdocs...', 47, Array)
    #1 [...]\system\modules\core\library\Contao\Database\Mysqli.php(47): mysqli->mysqli('localhost', 'foo', 'foo', 'foo', 3306, '')
    #2 [...]\system\modules\core\library\Contao\Database.php(77): Contao\Database\Mysqli->connect()
    #3 [...]\system\modules\core\library\Contao\Database.php(160): Contao\Database->__construct(Array)
    #4 [internal function]: Contao\Database::getInstance()
    #5 [...]\system\modules\core\library\Contao\System.php(110): call_user_func(Array)
    #6 [...]\system\modules\core\classes\Backend.php(37): Contao\System->import('Database')
    #7 [...]\composer\vendor\menatwork\ctocommunication\system\modules\ctoCommunication\CtoCommunication.php(96): Contao\Backend->__construct()
    #8 [...]\composer\vendor\menatwork\ctocommunication\system\modules\ctoCommunication\CtoCommunication.php(130): CtoCommunication->__construct()
    #9 [internal function]: CtoCommunication::getInstance()
    #10 [...]\system\modules\core\library\Contao\System.php(110): call_user_func(Array)
    #11 [...]\system\modules\core\classes\BackendTemplate.php(44): Contao\System->import('CtoCommunicatio...')
    #12 [...]\system\modules\core\classes\BackendTemplate.php(149): Contao\BackendTemplate->parse()
    #13 [...]\contao\install.php(827): Contao\BackendTemplate->output()
    #14 [...]\contao\install.php(131): InstallTool->outputAndExit()
    #15 [...]\contao\install.php(1093): InstallTool->run()
    #16 {main}
    
    
    Fatal error: Uncaught exception Exception with message Unknown database 'foo' thrown in [...]\system\modules\core\library\Contao\Database\Mysqli.php on line 51
    
    #0 [...]\system\modules\core\library\Contao\Database.php(77): Contao\Database\Mysqli->connect()
    #1 [...]\system\modules\core\library\Contao\Database.php(160): Contao\Database->__construct(Array)
    #2 [internal function]: Contao\Database::getInstance()
    #3 [...]\system\modules\core\library\Contao\System.php(110): call_user_func(Array)
    #4 [...]\system\modules\core\classes\Backend.php(37): Contao\System->import('Database')
    #5 [...]\composer\vendor\menatwork\ctocommunication\system\modules\ctoCommunication\CtoCommunication.php(96): Contao\Backend->__construct()
    #6 [...]\composer\vendor\menatwork\ctocommunication\system\modules\ctoCommunication\CtoCommunication.php(130): CtoCommunication->__construct()
    #7 [internal function]: CtoCommunication::getInstance()
    #8 [...]\system\modules\core\library\Contao\System.php(110): call_user_func(Array)
    #9 [...]\system\modules\core\classes\BackendTemplate.php(44): Contao\System->import('CtoCommunicatio...')
    #10 [...]\system\modules\core\classes\BackendTemplate.php(149): Contao\BackendTemplate->parse()
    #11 [...]\contao\install.php(827): Contao\BackendTemplate->output()
    #12 [...]\contao\install.php(131): InstallTool->outputAndExit()
    #13 [...]\contao\install.php(1093): InstallTool->run()
    #14 {main}
    Wenn man dadurch auf die Idee kommt die localconfig.php zu löschen (damit keine Informationen über die Datenbankverbindung vorhanden sind), bekommt man beim Aufruf der install.php aber folgenden Fehler:
    Code:
    Fatal error: Class 'Database\' not found in [...]\system\modules\core\library\Contao\Database.php on line 160

    Um doch wieder in das Install Tool zu gelangen muss man folgende Extensions deaktivieren1:
    • ctoCommunication
    • syncCto

    Ist das so "vorgesehen" bzw. lässt sich das nicht verbessern? Sollte das Install Tool nicht im Notfall auf jeden Fall aufgerufen werden können? Oder ist dies eher ein Problem von Contao selbst und nicht unbedingt ein Problem der Extension syncCto.


    1 Also in den Ordnern system/modules/ctoCommunication und system/modules/syncCto eine Datei namens ".skip" erstellen

  2. #2
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ob es in 3.2.4 noch so ist, weiss ich nicht, vermutlich aber schon. Wie du so schön schriebst, es ist tatsächlich ein Problem von Contao selbst. Erst wenn du die pathconfig.php auch noch löschst, bekommst du mit der install.php die Chance, die DB-Daten neu einzugeben.

    ABER: Wenn du die localconfig.php löschst, sind auch die darin gespeicherten sonstigen Einstellungen weg und müssen neu eingegeben werden, angefangen von den Zeit/Datumseinstellungen über Admin-Emailadresse bis maximale Bildgrösse usw. Die bessere Variante ist deshalb sicher, die Datenbank-Zugangsdaten einfach direkt in der localconfig.php zu korrigieren.

  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.116
    Partner-ID
    10107

    Standard

    Zitat Zitat von tab Beitrag anzeigen
    Ob es in 3.2.4 noch so ist, weiss ich nicht, vermutlich aber schon. Wie du so schön schriebst, es ist tatsächlich ein Problem von Contao selbst. Erst wenn du die pathconfig.php auch noch löschst, bekommst du mit der install.php die Chance, die DB-Daten neu einzugeben.

    ABER: Wenn du die localconfig.php löschst, sind auch die darin gespeicherten sonstigen Einstellungen weg und müssen neu eingegeben werden, angefangen von den Zeit/Datumseinstellungen über Admin-Emailadresse bis maximale Bildgrösse usw. Die bessere Variante ist deshalb sicher, die Datenbank-Zugangsdaten einfach direkt in der localconfig.php zu korrigieren.
    Ja, schon, die Datenbank Zugangsdaten eingeben ist ja nicht das primäre Problem, aber selbst wenn man das gemacht hat und die Datenbank noch leer ist, kommt man immer noch nicht in das Install Tool, so lange die syncCto Extension (und ctoCommunication) aktiv ist (sorry, das hatte ich im ersten Post vergessen zu erwähnen).

    Es ist ja kein so abwegiges Szenario, dass man unter Umständen nur mit syncCto backups macht. Dieses Backup möchte man auch wieder mit syncCto zurückspielen, wenn die Datenbank warum auch immer komplett verloren geht. Dies ist aber nicht so einfach, weil syncCto die Ausführung des Install Tools in so einem Fall verhindert.
    Geändert von Spooky (28.01.2014 um 11:58 Uhr)

  4. #4
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Und wie soll man das deiner Meinung nach lösen? Das ist ein Henne <-> Ei Problem. Ohne das Backup kein sauberes Contao und ohne Contao kein syncCto

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.116
    Partner-ID
    10107

    Standard

    Ah sorry, Kommando zurück, wenn die Datenbank einfach nur leer ist, blockiert syncCto nicht den Aufruf der install.php .


    Zitat Zitat von andreasisaak Beitrag anzeigen
    Und wie soll man das deiner Meinung nach lösen? Das ist ein Henne <-> Ei Problem. Ohne das Backup kein sauberes Contao und ohne Contao kein syncCto
    Naja demzufolge würde das Problem aber auch zutreffen, wenn du Contao einfach von Grund auf neu installieren willst. Da existierst von Haus aus noch kein "sauberes" Contao, das Install Tool lässt sich aber trotzdem aufrufen . Ich versteh schon worauf du hinaus willst, ich fand es nur erwähnens- bzw. fragenswert. (... dass syncCto das Install Tool blockiert in so einem Zustand. Das Install Tool würde ja ansonsten ohne der Extension noch einwandfrei funktionieren.)

  6. #6
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ok, hast du dann schon mal probiert localconfig.php UND pathconfig.php zu löschen / umzubenennen? Damit hat es zumindest bei mir funktioniert, dass man neue Datenbank-Zugangsdaten eingeben konnte. Wenn das mit installiertem / aktiviertem SyncCto immer noch nicht geht, dann ist dieser Teil des Problems wohl SyncCto zuzuordnen.

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.116
    Partner-ID
    10107

    Standard

    Zitat Zitat von tab Beitrag anzeigen
    Ok, hast du dann schon mal probiert localconfig.php UND pathconfig.php zu löschen / umzubenennen? Damit hat es zumindest bei mir funktioniert, dass man neue Datenbank-Zugangsdaten eingeben konnte. Wenn das mit installiertem / aktiviertem SyncCto immer noch nicht geht, dann ist dieser Teil des Problems wohl SyncCto zuzuordnen.
    Wenn ich localconfig.php und pathconfig.php lösche, dann kommt weiterhin der Fehler
    Code:
    Fatal error: Class 'Database\' not found in [...]\system\modules\core\library\Contao\Database.php on line 160
    wenn ich die install.php aufrufe. Und zwar unabhängig davon, ob die Datenbank selbst noch da ist oder nicht!

    Also wenn man bei einem funktionierenden Contao System, mit funktionierender Datenbank und korrekten befüllten tables etc. die localconfig.php verliert, lässt sich das Install Tool nicht aufrufen, so lange die syncCto Extension aktiv ist.
    Geändert von Spooky (28.01.2014 um 12:22 Uhr)

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.116
    Partner-ID
    10107

    Standard

    Ok, ich habe nun folgenden Test gemacht, um das zu verifizieren:
    1. Neueste Version von Contao herunterladen (in diesem Fall 3.2.4) und am Server entpacken
    2. syncCto 2.5.0.0 RC1 direkt herunterladen und in TL_ROOT entpacken (bevor man install.php aufruft)
    3. contao/install.php aufrufen -> Fehler
      Code:
      Fatal error: Class 'Database\' not found in [...]\system\modules\core\library\Contao\Database.php on line 160
    Testumgebung: Windows 7 x64, XAMPP 1.8.3 mit PHP 5.5.3
    Geändert von Spooky (28.01.2014 um 12:27 Uhr)

  9. #9
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Selber Fehler auf einem Unix Webserver?

  10. #10
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.116
    Partner-ID
    10107

    Standard

    Ja, der selbe Fehler passiert auch unter Debian 7, PHP 5.4.4 (selbe Vorgehensweise wie zuvor: Contao frisch entpackt, syncCto dazu, danach erst install.php aufrufen)
    Geändert von Spooky (28.01.2014 um 21:50 Uhr)

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
  •