Categories
Dev

phpbb3 mysql4 zu mysql5 Update4 min read

In den letzten Tagen habe ich mir Zeit genommen einige meiner Domains/Webseiten auf einen neuen Ubuntu Server zu transferieren. Sie waren auf einem opensuse. Dank der tollen Migrations-Funktion von Plesk kann man 1:1 seine gesamte Konfig von einem Server zum anderen übertragen. Probleme gabs damit soweit nicht. Beim check der Webseiten kam aber bei einer phpbb3 Installation böses Erwachen: Durch den Umstieg von mysql4 auf mysql5 gabs hier einige Probleme. Dazu einige Hilfestellungen aus den Support Foren:

Default Values Queries
Spaltenlänge bbcode_uid

Man beachte: beide Datenbanken SIND utf8!!. Zum einen hat der DB Layer von phpbb3 Probleme mit Querys, da MySQL5 keine Default Values mehr hat und alle Querys alá “insert into xx value (”, 2, “uuu”)” aussahen. Dafür gibts aber ein offizielles Script. Drüber laufen lassen -> Beiträge können erstellt werden. Oder doch nicht..? Fehlermeldung “Data too long for column ‘bbcode_uid’ at row 1” -> Lösung: Einfach die Spaltenlänge von bbcode_uid auf 8 erhöhen. Dann noch die Probleme mit der fehlerhaften Encodierung (komischerweise ist nur die Tabelle phpbb_posts betroffen) mit folgenden SQl Script fixen:

UPDATE phpbb_posts SET post_text = REPLACE(post_text, 'ß', 'ß') WHERE post_text LIKE '%ß%';
UPDATE phpbb_posts SET post_text = REPLACE(post_text, '´', '') WHERE post_text LIKE '%´%';
UPDATE phpbb_posts SET post_text = REPLACE(post_text, 'ä', 'ä') WHERE post_text LIKE '%ä%';
UPDATE phpbb_posts SET post_text = REPLACE(post_text, 'ö', 'ö') WHERE post_text LIKE '%ö%';
UPDATE phpbb_posts SET post_text = REPLACE(post_text, 'ü', 'ü') WHERE post_text LIKE '%ü%';
UPDATE phpbb_posts SET post_text = REPLACE(post_text, 'Ä', 'Ä') WHERE post_text LIKE '%Ä%';
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, 'ß', 'ß') WHERE post_subject LIKE '%ß%';
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, '´', '') WHERE post_subject LIKE '%´%';
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, 'ä', 'ä') WHERE post_subject LIKE '%ä%';
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, 'ö', 'ö') WHERE post_subject LIKE '%ö%';
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, 'ü', 'ü') WHERE post_subject LIKE '%ü%';
UPDATE phpbb_posts SET post_subject = REPLACE(post_subject, 'Ä', 'Ä') WHERE post_subject LIKE '%Ä%';
UPDATE phpbb_users SET user_sig = REPLACE(user_sig, 'ß', 'ß') WHERE user_sig LIKE '%ß%';
UPDATE phpbb_users SET user_sig = REPLACE(user_sig, '´', '') WHERE user_sig LIKE '%´%';
UPDATE phpbb_users SET user_sig = REPLACE(user_sig, 'ä', 'ä') WHERE user_sig LIKE '%ä%';
UPDATE phpbb_users SET user_sig = REPLACE(user_sig, 'ö', 'ö') WHERE user_sig LIKE '%ö%';
UPDATE phpbb_users SET user_sig = REPLACE(user_sig, 'ü', 'ü') WHERE user_sig LIKE '%ü%';
UPDATE phpbb_users SET user_sig = REPLACE(user_sig, 'Ä', 'Ä') WHERE user_sig LIKE '%Ä%';
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, 'ß', 'ß') WHERE topic_title LIKE '%ß%';
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, '´', '') WHERE topic_title LIKE '%´%';
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, 'ä', 'ä') WHERE topic_title LIKE '%ä%';
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, 'ö', 'ö') WHERE topic_title LIKE '%ö%';
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, 'ü', 'ü') WHERE topic_title LIKE '%ü%';
UPDATE phpbb_topics SET topic_title = REPLACE(topic_title, 'Ä', 'Ä') WHERE topic_title LIKE '%Ä%';

also noch mal im Detail die Reihenfolge (angenommen man hat einen kompletten Dump in der neuen DB eingespielt und realisiert dass einiges nicht funktioniert):

  1. mysql4 -> mysql5 Upgrade Script Ausführen und SQL am Server exekutieren
  2. Die Länge der Spalte “bbcode_uid” in der Tabelle phpbb_posts auf 8 erhöhen
  3. komplette Spalte phpbb_posts trunkieren
  4. Dump nur für diese Tabelle wieder einspielen
  5. Encoder Fix SQL ausführen
  6. Fertig

Leave a Reply

Your email address will not be published. Required fields are marked *