Datenbank import hat Umlaute zerstört

  • Ich habe meine Datenbank von einer alten 2.3.3 Installation exportiert und in eine lokale Installation auf meinem Rechner importiert (mit phpmyadmin, Option war jedesmal UTF8). Zusätzlich habe ich auf 2.8.3 geupdatet.

    Jetzt sind aber alle Umlaut murks: "auslässt... können" usw.

    Wie kann ich das wieder beheben?

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Du könntest in der Datenbank mit Suchen&Ersetzen arbeiten: http://bueltge.de/wp-suchen-und-ersetzen-de-plugin/114/

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Ich habe mal nachgeschaut - die zu exportierende Datenbank ist als latin1 gespeichert, enthält aber utf8 zeichen. Die sind dann dementsprechend in der Datenbank kaputt, aber WP zeigt sie als utf8 richtig an.

    Beim exportieren kann ich gar keine Optionen zum encoding wählen. Die Datei enthält danach utf8 zeichen als latin1 gespeichert.

    Wenn ich als latin1 importiere, dann zeigt phpmyadmin mir wieder dasselbe bei der Kollation an ( latin1_swedish_ci), aber WP zeigt mir nur noch Sonderzeichen an.

    wie also exportiert und importiert man die WP Datenbank richtig?

  • Dann such & ersetz doch einfach in deiner neuen Datenbank

    Du könntest in der Datenbank mit Suchen&Ersetzen arbeiten: http://bueltge.de/wp-suchen-und-ersetzen-de-plugin/114/

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Vermutlich ist das ein Problem das ich habe weil ich ursprünglich mal WP 2.1.x genutzt habe, wie hier beschrieben:
    http://codex.wordpress.org/Converting_Database_Character_Sets

    Allerdings verstehe ich nicht wie ich die mysql Kommandos eingeben soll, insbesondere den Punkt

    Zitat


    The output of these statements will be another set of statements, based on the tables and columns in your database. Change to your Wordpress database and execute the statements generated above.

    Das dabei erwähnte Plugin soll auch nur bis WP 2.2.x laufen.

  • Dann such & ersetz doch einfach in deiner neuen Datenbank


    Ich kenne nicht alle möglichen Sonderzeichen von utf8 und ihre latin1 Äquivalente. Eine manuelles Ersetzten bei einem Systematischen Fehler möchte ich auf jeden Fall vermeiden.

    Eine Lösung mit mysql scheint es ja zu geben, aber ich verstehe die Anleitung nicht hinreichend.

  • musst auf jeden Fall in MySQL machen. Solltest aber zumindest MySQL-Grundwissen mitbringen, sonst hat es keinen Sinn, das zu erklären.


    Ich hätte jetzt phpmysql zum ausführen der mysql befehle genommen.
    SQL habe ich nie gelernt, aber verstehe grob was die Befehle machen sollen.

    So wie ich die Anleitung verstehe, soll ich folgendes (mit Ersetzten von 'MyDb' mit meinem Datenbanknamen) ausführen

    Code
    USE information_schema;  
    SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'char', 'binary'), ';') FROM columns WHERE table_schema = 'MyDb' and data_type LIKE '%char%';  
    SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'text', 'blob'), ';') FROM columns WHERE table_schema = 'MyDb' and data_type LIKE '%text%';  
    SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8;') FROM columns WHERE table_schema = 'MyDb' and data_type LIKE '%char%';  
    SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8;') FROM columns WHERE table_schema = 'MyDb' and data_type LIKE '%text%';


    Das liefert mir ein SQL Ergebnis. Was und ob ich damit was anfangen soll ist mir unklar.

    Danach soll ich noch folgendes ausführen

    Code
    ALTER DATABASE MyDb CHARACTER SET utf8;

    Die Grundlegende Idee ist wohl, erstmal alles in binäres Format zu überführen und danach wieder in Zeichen.

  • Wenn ich die Befehle ausführe, dann bekomme ich für jede Zeile eine Reihe von neuen Anweisungen, die in meiner Datenbank auszuführen sind.

    Wenn ich das mache, dann scheitert mysql jedoch an dieser Zeile (im ersten der 4 Schritte):

    Zitat


    SQL-Befehl:
    ALTER TABLE wp_1posts MODIFY post_name varbinary( 200 ) ;


    MySQL meldet:
    #1283 - Column 'post_name' cannot be part of FULLTEXT index

    was sagt mir das jetzt?

  • Da mir weder hier, noch jemand bei dem Wordpress Support Forum zu dem mysql Fehler was sagen kann, und alle Plugins zu dem Thema nicht annähernd kompatibel sind mit WP 2.8.3 oder schlicht nichts bewirken habe ich mich an Suchen und Ersetzten versucht.

    Diese Umwandlungen habe ich bislang gefunden:

    Aber das WP ein so massives Problem selber verursacht und keine Möglichkeit zur Lösung bereitstellt hat mein Vertrauen in WP beschädigt. (Mal abgesehen von 4 bugfixes in so kurzer Zeit...)

  • Leider gibt es in meiner Datenbank noch hunderte falsche Umlaute, weil search & replace nicht in der gesamten Datenbank sucht.

    Wie könnte ich das machen?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!