Ich habe eine Zeichenfolge, die tausende Male in einer WordPress-Installation (dem Namen eines Servers) über mehrere Spalten, Datensätze und Tabellen hinweg enthalten ist.
Ich möchte es mit dem Standort eines anderen Servers aktualisieren – wir verschieben den Inhalt.
Die Quelle wäre also so etwas wie http://my-server1/some/link/to/somethingund ich möchte es durch ersetzen http://mein-anderer-server/some/link/to/something. Ich möchte diesen Vorgang im Wesentlichen für jede Instanz von wiederholen http://mein-server1.
Gibt es eine einfache Möglichkeit, dies in MySQL zu tun? Ein Werkzeug? Oder muss ich leider jeden Datensatz problematisch aktualisieren?
Danke,
Eine grobe (aber effektive) Methode wäre, das Schema in eine Datei zu kopieren, das Suchen-und-Ersetzen sorgfältig anzuwenden und dann erneut zu importieren.
Das habe ich übrigens heute gemacht 🙂

Enbee
Bin bei einer Google-Suche darauf gestoßen, aber vielleicht hilft es einigen weiter. Wenn Sie die Tabellen und Spalten kennen (Sie könnten dies mit der Wildcard-Suche in phpMyAdmin finden),
AKTUALISIEREN Tabellenname EINSTELLEN Spaltenname = ERSETZEN (Spaltenname‘http://oldsite.com‘,’http://newsite.com‘);
Ersetzen deutlich Teile mit Ihren eigenen.
Wenn Sie eine große Datenbank hätten, könnten Sie dies in einem Skript anwenden, das jede Tabelle und Spalte durchlaufen könnte.

Code-Synthese
Die MySQL-Dump-Methode wäre die beste Wahl, wenn Sie gerne die gesamte Datenbank neu importieren möchten. Für alle, die dies nicht tun möchten – die WordPress-Kerninstallation besteht tatsächlich nur aus 11 Tabellen, von denen nur wenige Inhaltsspalten sind, sodass eine Ersetzung durch Spalten genauso einfach wäre. Angenommen, Sie haben nicht viele Plugin-Tabellen, die auf Ihren Link oder Ihre Zeichenfolge verweisen, wäre dies Ihr SQL:
UPDATE wp_commentmeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx');
UPDATE wp_comments SET comment_content = REPLACE(comment_content,'xcurrentx','xreplacementx');
UPDATE wp_links SET link_description = REPLACE(link_description,'xcurrentx','xreplacementx');
UPDATE wp_options SET option_value = REPLACE(option_value,'xcurrentx','xreplacementx');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx');
UPDATE wp_posts SET post_content = REPLACE(post_content,'xcurrentx','xreplacementx');
UPDATE wp_posts SET post_title = REPLACE(post_title,'xcurrentx','xreplacementx');
UPDATE wp_posts SET post_excerpt = REPLACE(post_excerpt,'xcurrentx','xreplacementx');
UPDATE wp_term_taxonomy SET description = REPLACE(description,'xcurrentx','xreplacementx');
UPDATE wp_usermeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx');
Ihre Frage wurde 2009 gepostet und in diesem Jahr entwickelte ein anderer Typ ein einfaches PHP-Tool, um in allen Tabellen einer bestimmten Datenbank nach einer Zeichenfolge zu suchen. Optional können Sie auch alle Vorkommen durch eine andere Zeichenfolge ersetzen.
Auch nach 5 Jahren (zum Zeitpunkt des Schreibens) ist die Verwendung dieses Tools gegen eine WordPress-Installation meiner Meinung nach effektiv und viel einfacher als die Verwendung eines MySQL-Dumps (obwohl Sie vielleicht auch einen Dump erstellen möchten, bevor Sie das Skript zu Sicherungszwecken ausführen ).
Weitere Informationen finden Sie im Blog des Autors Eric Amundson und auf der Launchpad-Seite des Projekts MySQL Suchen & Ersetzen
Ich glaube nicht, dass Sie nach all der Zeit immer noch nach einer Antwort suchen, aber ich habe mich entschieden, meinen Hinweis ebenfalls zu posten, in der Hoffnung, dass er jemand anderem helfen kann, der in Zukunft hier vorbeischaut und immer noch nach einer Lösung für dieses Problem sucht.
Zusätzlich zu Brad Larsons Antwort – um Variablen festzulegen wie:
SET @what_to_be_replaced = "what_to_be_replaced", @to_be_replaced_by = "to_be_replaced_by";
Und dann verwenden Sie es wie folgt:
UPDATE wp_commentmeta SET meta_value = REPLACE(meta_value, @what_to_be_replaced, @to_be_replaced_by );

Jean
Es gibt auch ein WordPress-Plugin namens Regex suchenwas das Laufen ermöglicht grep
Suchen und Ersetzen in der gesamten Datenbank.

Ondrej
MySQL’s REPLACE oder manuelles Ersetzen der Zeichenfolge in der SQL-Datei oder db in WordPress ist kein guter Weg. WordPress verwendet serialisierte Felder, die beschädigt werden können, wenn Sie eine Zeichenfolge darin ersetzen (das war mein Fall).
ich benutzte Bessere Suche Ersetzen Plugin, das für mich perfekt funktioniert hat
9637200cookie-checkWie suche und ersetze ich alle Instanzen einer Zeichenfolge in einer Datenbank?yes
Diese Art von Daten (die Daten sollten zumindest absolute Pfade sein) in einer Datenbank zu haben, ist eine ziemlich schlechte Idee, da Sie sie ändern müssen, wenn Sie umziehen. Warum haben Sie die URL der Website überhaupt in einer WordPress-Installation? Es sollte nur die eine globale Standortpräferenz vorhanden sein.
– Michael Köhler
19. Juni 2012 um 17:08 Uhr