web-dev-qa-db-fra.com

Quelle requête SQL pour faire une simple recherche et remplacer

Chaque fois que je crée un nouveau site Web, je crée d'abord un site intermédiaire sur un sous-domaine tel que "stage.domain-name.com".

Après que tout fonctionne correctement, j'exporte la base de données, l'ouvre dans le bloc-notes ++ et effectue une recherche/remplacement pour "sous-domaine.nom-domaine.com" et le remplace par "domaine-nom.com" ... enfin je l'importe dans un nouveau base de données pour le site en direct.

Ma question est ... quelle requête SQL aurais-je besoin d'exécuter si je voulais simplement faire cette simple recherche/remplacement sur l'ensemble de la base de données à l'aide de phpmyadmin?

-CH

19
NetConstructor.com

La table où votre URL est enregistrée est wp_options. Vous devriez faire une mise à jour sur les colonnes qui utilisent l'URL de votre site:

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"

Il se peut que certaines valeurs me manquent, mais chaque fois que vous effectuez cette opération de recherche/remplacement, vous pouvez remarquer les valeurs et les tables à mettre à jour et les ajouter à ce script.

WordPress Codex contient un guide pratique sur la façon de changer l’URL d’un site. C’est peut-être encore plus pratique pour vous: Changer l’URL du site

13
Fernando Briano

Il est préférable de faire des options, des publications, du contenu et une méta:

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');

Voir aussi Recherche de données avec phpMyAdmin et MySQL | Packt Publishing. And Search RegEx est un bon plug-in WP pour pouvoir rechercher Grep dans toutes les publications et toutes les pages et pour le remplacer.

Mise à jour du 16/06/2015: Il est préférable d'utiliser l'outil lié dans la phrase suivante, car un trouver/remplacer comme ci-dessus dans une sauvegarde de base de données cassera les données sérialisées. See interconnectit.com WordPress Serialized PHP Rechercher l'outil de remplacement. De cette façon, vous ne cassez pas les données sérialisées et n'avez pas besoin d'exécuter RegEx sur le contenu de publication, car le script d'interconnexion modifie les URL partout. J'utilise cet outil tout le temps pour migrer des sites vers différents domaines, ou simplement pour effectuer un changement global de http à https afin de forcer SSL sans plug-ins et de modifier toutes les URL du contenu pour éviter les erreurs d'élément non sécurisées.

27
markratledge

C’est un excellent script que j’utilise et qui fonctionne à merveille avec les tableaux sérialisés que WP utilise pour stocker les options. Assurez-vous simplement de le supprimer de votre serveur distant lorsque vous avez terminé, car cela représente un risque de sécurité ÉNORME.

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

9
lancemonotone

Pour cela, j'utilise WP-CLI parce que je le trouve le plus simple et qu’il s’occupe des données sérialisées.

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

Il existe également une option qui écrit vos modifications dans un fichier SQL au lieu de manipuler la base de données proprement dite:

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

4
Jan Beck

vous n’avez pas à le faire, vous pouvez utiliser des chemins relatifs.

lorsque vous liez quelque chose au lieu de subdomain.soemthing.com/image.jpg - utilisez /image.jpg par exemple

comme ça, vous ne rencontrerez pas le problème en premier lieu.

sinon, vous pouvez utiliser une instruction de mise à jour mysql

update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, ‘find this string’, ‘replace found string with this string’);
3
mireille raad

Pour changer le domaine wordpress dont nous avons souvent besoin, il peut s’avérer nécessaire de faire vivre le site à partir de localhost: Voici une liste complète des requêtes de mise à jour:

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');
  • Nous devons également ajouter d'autres tables qui ne sont pas par défaut avec WP si nécessaire.

UPDATE: Rechercher la base de données la version 3.1.0 est un outil convivial destiné aux développeurs, qui vous permet d'effectuer des actions de recherche/remplacement à l'échelle de la base de données. t endommage PHP chaînes ou objets sérialisés.

2
Reza Mamun