mysql: Ändern Sie in allen Tabellen http://old-domain.com in http://new-domain.com

Lesezeit: 4 Minuten

Benutzeravatar von Stan
Stan

Ich verwende Anweisungen von hier:

http://www.mydigitallife.info/2007/10/01/how-to-move-wordpress-blog-to-new-domain-or-location/

aber ich musste sie ändern, weil ich Mehrbenutzer verwende und es eine andere Tabellenstruktur hat (seltsam nummerierte Tabellen). Wie Sie in meiner vorherigen Frage sehen können, ist alles WIRKLICH problematisch … Meine Frage lautet also:

Kann ich einfach wechseln http://alte-domain.com zu http://neue-domain.com überall… in jeder Tabelle in dieser Datenbank? Wie mache ich eine solche Suche und ersetze sie durch mysql? Oder vielleicht etwas anderes wäre besser für diese Aufgabe zu verwenden?

Benutzeravatar von YOU
SIE

Sie könnten die gesamte Datenbank in eine .sql-Datei ausgeben und sie ersetzen und zurück importieren.

Um db in eine SQL-Datei zu kopieren, können Sie den Befehl mysqldump verwenden oder phpmyadmin verwenden

mysqldump --opt -uUSERNAME -pPASSWORD -h MYSQLDOMAIN YOURDB > yourdbdump.sql

Um Text in der .sql-Datei zu ersetzen, können Sie Folgendes tun

sed -ie 's/old-domain.com/new-domain.com/g' yourdbdump.sql

Um es wieder herzustellen

mysql -uUSERNAME -pPASSWORD -h MYSQLDOMAIN YOURDB < yourdbdump.sql

  • In was? Ich bin auf Linux mit Gnome.

    – Stan

    23. Januar 2010 um 5:43 Uhr

  • hey, das hat bei mir funktioniert, aber ich würde gerne verstehen, was das -ie bedeutet, kann es jemand erklären? Danke!

    – ohmmho

    24. April 2016 um 16:03 Uhr


  • @ohmmho, -i bedeutet, die Datei an Ort und Stelle zu bearbeiten, ich bin mir nicht sicher, warum ich sie abgelegt habe -e dort, kann nicht wirklich benötigt werden.

    – SIE

    25. April 2016 um 1:19 Uhr

WordPress MU ist mühsam zu migrieren.

Es gibt nichts, was von Tisch zu Tisch geht und diese URLs ersetzt. Und Sie sollten vorsichtig sein, wenn Sie die SQL-Dump-Datei bearbeiten, falls die URL in serialisierten Objekten oder Arrays gespeichert ist, da Sie dann die Integrität dieser Daten zerstören.

Wenn Sie dies direkt in MySQL tun möchten, können Sie dies tun, aber es wird zeitaufwändig sein. Es wird auch am sichersten sein.

Dies ist in PHPMyAdmin am einfachsten, selbst für erfahrene SQL-Gurus, da PHPMyAdmin einfach praktisch ist, da Sie die SQL-Abfrage häufig bearbeiten werden. Die Basisabfrage lautet:

Update "table_name"
SET "column_name" = REPLACE("column_name","find","replace")
WHERE "column_name" LIKE "%find%"

In Ihrem Fall also für die Post-Tabellen:

Update wp_1_posts
SET post_content = REPLACE(post_content,"www.oldurl.com","www.newurl.com")
WHERE post_content LIKE "%www.oldurl.com%"

Sehen Sie sich als Nächstes die Postmeta-Tabellen an. Sie könnten hier in Schwierigkeiten geraten, wenn es sich um serialisierte Daten handelt. Führen Sie also zuerst eine Suche durch, um zu sehen, wie die Daten aussehen, und sehen Sie, ob es bestimmte Felder gibt, die Sie aus dem Suchen/Ersetzen-Skript auslassen sollten. Ihr Update für diese Tabelle wird ähnlich wie das letzte aussehen:

Update wp_1_postmeta
SET meta_value = REPLACE(meta_value,"www.oldurl.com","www.newurl.com")
WHERE meta_value LIKE "%www.oldurl.com%"

Wenn Sie Felder gefunden haben, die Sie ausschließen müssen, ändern Sie das Skript wie folgt:

Update wp_1_postmeta
SET meta_value = REPLACE(meta_value,"www.oldurl.com","www.newurl.com")
WHERE meta_value LIKE "%www.oldurl.com%"
AND meta_name NOT IN ('meta_name_1', 'meta_name_2')

Die Optionstabelle sollte von Hand erstellt werden – Sie haben zu viel Potenzial, um etwas durch Automatisierung zu vermasseln. Suche nach siteurl, home und fileupload_url Felder. Suchen Sie nach irgendetwas anderem, das die Werte möglicherweise auch gespeichert hat, und aktualisieren Sie diese von Hand.

Aktualisieren Sie dann wp_blogs und wp_site entsprechend.

Die Migration von MU ist der Stoff, aus dem Alpträume gemacht sind. Gehen Sie langsam, schauen Sie sich alles an und, am wichtigsten Führen Sie dies alles mit einem Duplikat Ihrer Hauptdaten durch, um es zuerst zu testen. Der Datenbankplatz ist billig, verlorene Daten sind es nicht.

  • Beachten Sie außerdem, dass die blog_id in wp_blogs mit der wp_*_table-Struktur in der Datenbank übereinstimmt – Sie können ein PHP-Skript schreiben, das die Migration für Sie durchführt und durchführt. Ich habe dies getan und es spart viel Zeit (ich arbeite viel mit WP & WPMU). Leider kann ich das Drehbuch nicht veröffentlichen, da es in Firmenzeit geschrieben wurde.

    – Gipetto

    23. Januar 2010 um 16:02 Uhr

Du willst die INSERT() Funktion.

1390880cookie-checkmysql: Ändern Sie in allen Tabellen http://old-domain.com in http://new-domain.com

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy