Welche SQL-Abfrage, um eine einfache Suche und ersetzen zu tun

Wenn ich eine neue Website erstelle, erstelle ich zuerst eine Staging-Site in einer Subdomain wie “stage.domain-name.com”.

Nachdem alles korrekt funktioniert, exportiere ich die database, öffne sie in notepad ++ und suche / ersetze nach “subdomain.domainname.com” und ersetze sie durch “domain-name.com” … schliesslich importiere ich sie in eine neue database für die Live-Site.

Meine Frage ist … welche SQL-Abfrage müsste ich ausführen, wenn ich nur dieses einfache Suchen / Ersetzen auf der gesamten database mit phpmyadmin durchführen möchte?

-CH

Solutions Collecting From Web of "Welche SQL-Abfrage, um eine einfache Suche und ersetzen zu tun"

Die Tabelle, in der Ihre URL gespeichert ist, lautet wp_options. Sie sollten eine Aktualisierung der Spalten vornehmen, die die URL für Ihre Site verwenden:

UPDATE TABLE wp_options SET option_value = "new domain" WHERE option_name = "siteurl" UPDATE TABLE wp_options SET option_value = "new domain" WHERE option_name = "home" 

Es könnte sein, dass Ihnen ein Wert fehlt, aber wenn Sie diesen process erneut ausführen, können Sie die Werte und Tabellen erkennen, die aktualisiert werden sollen, und sie zu diesem Skript hinzufügen.

WordPress Codex hat eine nette Anleitung, wie man eine Site URL ändert, vielleicht ist das für Sie noch praktischer: Ändern der Site URL

Am besten Optionen, Beiträge, Post-Inhalt und Post-Meta:

 UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com'); UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com'); UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com'); 

Siehe auch Suchen von Daten mit phpMyAdmin und MySQL | Paketveröffentlichung Und Search RegEx ist ein gutes WP-Plugin, um mit Grep durch alle Posts und Seiten suchen und ersetzen zu können.

Update 16.06.2015: Die Verwendung des im nächsten Satz verlinkten Werkzeugs ist viel besser, da ein einfaches Suchen / Ersetzen wie oben in einem database-Dump serialisierte Daten bricht. Siehe interconnect.com WordPress Serialized PHP Search Replace Tool. Auf diese Weise brechen Sie serialisierte Daten nicht und müssen RegEx nicht für Post-Inhalt ausführen, da das Verbindungsskript URLs überall ändert. Ich nutze dieses Tool ständig, um Websites auf verschiedene Domains zu migrieren, oder mache einfach eine globale Änderung von http zu https, um SSL ohne Plugins zu erzwingen und alle URLs im Inhalt zu ändern, um unsichere Elementerrors zu vermeiden.

Dies ist ein großartiges Drop-In-Skript, das ich verwende, und es funktioniert wunderbar mit den serialisierten Arrays, die WP zum Speichern von Optionen verwendet. Stellen Sie sicher, dass Sie es von Ihrem Remote-Server löschen, wenn Sie fertig sind, da es ein RIESIGES Sicherheitsrisiko darstellt.

https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

Sie müssen dies nicht tun, Sie können relative Pfade verwenden.

wenn du etwas verlinken statt subdomain.soemthing.com/image.jpg – benutze zum Beispiel /image.jpg

So wirst du das Problem nicht an erster Stelle haben.

andernfalls für eine mysql-update-statement, die Sie verwenden können

 update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, 'find this string', 'replace found string with this string'); 

Um die WordPress-Domain zu ändern, was wir oft brauchen, kann es sein, dass die Site von localhost live geschaltet wird: Dies ist eine vollständige Liste der Update-Anfragen:

 UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com'); UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com'); UPDATE wp_links SET link_url = replace(link_url, 'http://olddomain.com', 'http://newdomain.com'); UPDATE wp_links SET link_image = replace(link_image, 'http://olddomain.com', 'http://newdomain.com'); UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com'); UPDATE wp_usermeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com'); /*UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl' OR option_name = 'widget_text' OR option_name = 'dashboard_widget_options';*/ UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com'); 
  • Wir müssen auch andere Tabellen hinzufügen, die bei WP nicht standardmäßig sind.

UPDATE: Search Replace DB Version 3.1.0 ist ein benutzerfreundliches Frontend-Tool für Entwickler, mit dem Sie datenbankweite Suchen / Ersetzen-Aktionen durchführen können, die PHP-serialisierte Strings oder Objekte nicht beschädigen.

Dafür benutze ich WP-CLI, weil ich es am einfachsten finde und serialisierte Daten behandelt.

wp search-replace 'http://example.dev' 'http://example.com' --skip-columns=guid

Es gibt auch eine Option, die Ihre Änderungen in eine SQL-Datei schreibt, anstatt die eigentliche database zu manipulieren:

wp search-replace foo bar --export=database.sql

Eigentlich müssen Sie keine SQL-Abfrage verwenden, sondern nur einige Anpassungen in der Datei wp_config und functions.php in Ihrem Theme. Sehen Sie sich dieses Thema in WordPress Codex an: https://codex.wordpress.org/Changing_The_Site_URL