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.
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
- Führe die Aktualisierung durch
Es sollte obige Fehlermeldung erscheinen - Öffne includes/db/dbal.php
- Finde folgenden Code:
Code: Alles auswählen
global $msg_long_text; $msg_long_text = $message;
- Füge direkt dahinter ein (in der nächsten Zeile):
Code: Alles auswählen
die($msg_long_text);
- 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()
- 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. - Öffne includes/functions_user.php
- Finde folgenden Code:
Code: Alles auswählen
function user_add($user_row, $cp_data = false)
- Finde in dieser Funktion:
Code: Alles auswählen
'user_form_salt' => unique_id(),
- Nun füge den neuen Standardwert für die Spalte von Schritt 1 hinzu (neue Zeile):
Achte auf die obige Zeile. Ersetze
Code: Alles auswählen
'user_form_salt' => unique_id(), 'user_note' => '',
user_note
einfach mit dem von dir notierten Namen aus Schritt 1. - 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. - 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.comWenn du irgendwo in dieser Anleitung einen Fehler findest oder einen Verbesserungsvorschlag hast, schreibe mir oder irgendeinem Mitglied der Supporter eine PN.