[3.0.8 Update] Fatal error: in */db/dbal.php on line 676

phpBB 3.0 hat sein "End of Life" erreicht. Eine Neu-Installation wird nicht mehr unterstützt.
Benutzeravatar
Mungo
Administrator
Administrator
Beiträge: 6604
Registriert: 03.05.2003 19:34

[3.0.8 Update] Fatal error: in */db/dbal.php on line 676

Beitragvon Mungo » 22.11.2010 20:36

Einleitung


Seit der Veröffentlichung von 3.0.8 ist uns zu Ohren gekommen, dass Änderungen einiger beliebter Modifikationen an der Datenbankstruktur mit der Funktion »user_add()« inkompatibel sind. Die Auswirkung davon ist, dass beim Update auf phpBB 3.0.8 eine "fatal error" Fehlermeldung erscheint.

Hintergrund des Problems ist, dass bei MySQL für bestimmte Datentypen (z.B. TEXT) kein Standardwert in der Tabellendefinition eingetragen werden kann. Für jede Spalte in der users Tabelle, welche keinen solchen Standardwert besitzt, muss deshalb ein Eintrag zur Funktion »user_add()« hinzugefügt werden. Ohne diesen Eintrag fehlt den von dieser Funktion erzeugten Datenbankabfragen ein Vorgabewert für diese Spalte, was einen Datenbankfehler zur Folge hat.

Wenn du die Aktualisierung auf 3.0.8 durchführst und die nachstehende Fehlermeldung erhältst, dann folge dieser Anleitung. Bei allen anderen Fehlermeldungen, erstelle bitte ein neues Thema in diesem Forum.

Code: Alles auswählen

Die Datenbank wird auf die neueste Version aktualisiert

Datenbankstruktur wird aktualisiert

Fortschritt :: Kein Update notwendig

Daten werden aktualisiert

Fortschritt :: . . . . . . . . . .
Fatal error: in */includes/db/dbal.php on line 676


DBAL anpassen, um Fehler anzuzeigen


  1. Führe die Aktualisierung durch
    Es sollte obige Fehlermeldung erscheinen
  2. Öffne includes/db/dbal.php
  3. Finde folgenden Code:

    Code: Alles auswählen

                global $msg_long_text;
                $msg_long_text = $message;
  4. Füge direkt dahinter ein (in der nächsten Zeile):

    Code: Alles auswählen

                die($msg_long_text);
  5. Das Ergebnis sollte so aussehen:

    Code: Alles auswählen

                global $msg_long_text;
                $msg_long_text = $message;
                die($msg_long_text);

Ergänze die notwendigen Einträge in der Funktion user_add()


  1. Versuche die Aktualisierung erneut durchzuführen
    Du solltest nun eine Fehlermeldung erhalten, die ungefähr so lautet:

    Code: Alles auswählen

    Field 'user_note' doesn't have a default value [1364]
    SQL
    <gekürzt>
    user_note ist der Name der Spalte, die das Problem verursacht (deine wird wahrscheinlich anders heißen).
    Notiere dir den Namen der Spalte irgendwo. Am Ende dieser Anleitung solltest du herausfinden zu welcher Modifikation diese Spalte gehört und den Autor der Modifikation benachrichtigen.
  2. Öffne includes/functions_user.php
  3. Finde folgenden Code:

    Code: Alles auswählen

    function user_add($user_row, $cp_data = false)
  4. Finde in dieser Funktion:

    Code: Alles auswählen

          'user_form_salt'         => unique_id(),
  5. Nun füge den neuen Standardwert für die Spalte von Schritt 1 hinzu (neue Zeile):

    Code: Alles auswählen

          'user_form_salt'         => unique_id(),
          'user_note'               => '',
    Achte auf die obige Zeile. Ersetze user_note einfach mit dem von dir notierten Namen aus Schritt 1.
  6. Versuche die Aktualisierung erneut durchzuführen.
    Wenn du die gleiche Fehlermeldung mit einem andern Spaltennamen erhältst, dann kehre zu Schritt 1 zurück und folge den Anweisungen erneut. Diesmal allerdings für die neue Spalte. Wie oft du dies machen musst, hängt davon ab wie viele Spalten ohne Standardwert von Modifikationen hinzugefügt wurden.
  7. Lösche den Debug-Code (die($msg_long_text);), den du in die Datei includes/db/dbal.php eingefügt hast.

Nachbereitung


Wenn du Probleme mit den obigen Anweisungen hast, dann eröffne bitte ein neues Thema in diesem Forum und wir werden dir dabei helfen. Bevor du jedoch ein neues Thema startest, solltest du es zunächst mit der obigen Anleitung alleine versuchen. Möglicherweise musst du die Anleitung einfach ein paar Male lesen.

Wenn du irgendwo in dieser Anleitung einen Fehler findest oder einen Verbesserungsvorschlag hast, schreibe mir oder irgendeinem Mitglied der Supporter eine PN.


Das ist eine Übersetzung der Anleitung von Marshalrusty auf phpBB.com

Zurück zu „[3.0.x] Installation, Update und Konvertierung“