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?
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
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.
Du willst die INSERT()
Funktion.