Wenn Sie sicher sind, dass keines der zu aktualisierenden Felder serialisiert ist, funktionieren die oben genannten Lösungen gut.
Wenn jedoch eines der Felder, die aktualisiert werden müssen, serialisierte Daten enthält, wird die Serialisierung durch eine SQL-Abfrage oder ein einfaches Suchen / Ersetzen in einer Speicherauszugsdatei unterbrochen (es sei denn, die ersetzte Zeichenfolge enthält genau die gleiche Anzahl von Zeichen wie die gesuchte Zeichenfolge).
Ein "serialisiertes" Feld sieht allerdings folgendermaßen aus:
a:1:{s:13:"administrator";b:1;}
Die Anzahl der Zeichen in den relevanten Daten wird als Teil der Daten codiert.
Die Serialisierung ist eine Möglichkeit, "Objekte" in ein Format zu konvertieren, das leicht in einer Datenbank gespeichert werden kann, oder Objektdaten einfach zwischen verschiedenen Sprachen zu transportieren.
Hier finden Sie eine Erklärung der verschiedenen Methoden zum Serialisieren von Objektdaten und warum Sie dies möglicherweise möchten. Hier finden Sie einen WordPress-zentrierten Beitrag: Serialisierte Daten, was bedeutet das und warum ist es so wichtig? im Klartext.
Es wäre erstaunlich, wenn MySQL ein eingebautes Tool hätte, um serialisierte Daten automatisch zu verarbeiten, aber dies ist nicht der Fall, und da es verschiedene Serialisierungsformate gibt, wäre es nicht einmal sinnvoll, dies zu tun.
wp-cli
Einige der obigen Antworten schienen spezifisch für WordPress-Datenbanken zu sein, die einen Großteil ihrer Daten serialisieren. WordPress bietet ein Kommandozeilen-Tool, wp search-replace , das die Serialisierung übernimmt .
Ein grundlegender Befehl wäre:
wp search-replace 'an-old-string' 'a-new-string' --dry-run
WordPress betont jedoch, dass das guid
niemals geändert werden sollte , daher empfiehlt es, diese Spalte zu überspringen.
Es wird auch empfohlen, dass Sie häufig die wp_users
Tabelle überspringen möchten .
So würde das aussehen:
wp search-replace 'https://old-domain.com' 'https://shiney-new-domain.com' --skip-columns=guid --skip-tables=wp_users --dry-run
Hinweis: Ich habe das --dry-run
Flag hinzugefügt, damit durch das Kopieren und Einfügen nicht automatisch die Datenbank von Personen zerstört wird. Wenn Sie sicher sind, dass das Skript das tut, was Sie wollen, führen Sie es erneut ohne dieses Flag aus.
Plugins
Wenn Sie WordPress verwenden, gibt es auch viele kostenlose und kommerzielle Plugins, die eine GUI-Schnittstelle bieten, um dasselbe zu tun, gepackt mit vielen zusätzlichen Funktionen.
Interconnect / it-PHP-Skript
Interconnect / it bietet ein PHP-Skript für die Verarbeitung serialisierter Daten: Tool zum sicheren Suchen und Ersetzen . Es wurde für die Verwendung auf WordPress-Sites erstellt, kann aber anscheinend in jeder von PHP serialisierten Datenbank verwendet werden.
Viele Unternehmen, einschließlich WordPress selbst, empfehlen dieses Tool. Anleitung hier, ca. 3/4 auf der Seite.