Comment remplacer le nom de domaine dans une base de données Wordpress?

11

J'ai une base de données Wordpress installée dans un environnement de développement ... ainsi, toutes les références au site lui-même ont une adresse IP fixe (par exemple 192.168.16.2). Maintenant, je dois migrer cette base de données vers une nouvelle installation Wordpress sur un hébergement. Le problème est que le cliché SQL contient de nombreuses références à l'adresse IP et que je dois le remplacer par: my_domain.com.

Je pourrais utiliser sed ou une autre commande pour modifier le fait que, depuis la ligne de commande, le problème est qu’il existe de nombreuses données de configuration qui utilisent JSON. Et alors? Comme vous le savez, les tableaux JSON utilisent des éléments tels que: s:4: pour savoir le nombre de caractères d’un élément et, par conséquent, si je remplace simplement l’IP par le nom de domaine, les fichiers de configuration seront corrompus.

J'ai utilisé il y a quelques années une application pour Windows qui permet de modifier les valeurs d'une base de données et de prendre en charge les tableaux JSON. Malheureusement, j'ai oublié le nom de l'application ... La question est donc: connaissez-vous une application qui me permette de faire ce que je veux?

    
posée Cristian 21.12.2010 - 23:54

9 réponses

7

Les données que vous consultez ne sont pas au format JSON. JSON ne stocke pas (normalement) les types de valeur et les longueurs comme ça. Ce que vous regardez, ce sont des données sérialisées. Une recherche Google pour "mysql remplace serialized" donne cette page, ce qui pourrait aider: enlace

    
réponse donnée MathSmath 22.12.2010 - 21:16
8

Le codex a un guide correct - Modifier l'URL du site .

En gros, il y a plusieurs endroits où l'URL a son importance ou pas (il en manque peut-être quelques-uns):

  • home et siteurl options contrôlant où WP pense que le site est;
  • poster des GUID, ils ressemblent à des liens mais ne sont en réalité pas que des identifiants. Je ne suis pas absolument certain qu’elles soient sans importance, mais j’ai eu beaucoup de changements d’URL sur la pile de tests et je n’ai jamais pris la peine de les mettre à jour.
  • liens dans les corps de publication;
  • éventuellement des liens dans les paramètres du plugin.
réponse donnée Rarst 22.12.2010 - 07:58
6

Comme Rarst l’a dit plus haut, la base de données NE DOIT changer que dans deux paramètres. Après avoir importé la base de données, je me connecte à PHPMyAdmin et l’édite directement.

J'utilise tout le temps un serveur de développement sur mon PC pour importer des flux de données. L'URL associée aux messages est similaire à celle indiquée par enlace et cela n'a jamais posé de problème.

J'avais l'habitude d'utiliser une recherche SQL et de la remplacer jusqu'à ce que je réalise que cela n'avait pas d'importance. J'ai migré quelques sites d'un domaine à un autre et j'ai utilisé des URL absolues dans le contenu. J'utilise l'option de recherche et de remplacement SQL.

update wp_posts set post_content = replace(post_content,'http://www.olddomain/','http://www.newdomain/');

David

    
réponse donnée David Law 23.12.2010 - 02:53
5

C’est une ressource incroyable que j'ai mise en favori que je retourne à maintes et maintes fois enlace

Ils indiquent

UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';
    
réponse donnée Tom 22.12.2010 - 00:51
3

Vous pouvez définir ces valeurs avec des constantes dans wp-config.php . Ensuite, vous pouvez, quand vous le souhaitez, modifier les entrées de la base de données via le plugin Adminer. Écrivez ceci dans le wp-config.php et les valeurs dans la base de données ne sont pas pertinentes:

define('WP_HOME', 'http://example.com/to-wordpress');
define('WP_SITEURL', 'http://example.com/to-blog');
    
réponse donnée bueltge 22.12.2010 - 01:02
2

Regardez ma réponse à cette question:

Il résout vos problèmes de nettoyage des données et peut également être personnalisé pour des besoins de migration de données spécifiques à l'aide de points d'ancrage.

J'espère que ça aide.

    
réponse donnée MikeSchinkel 22.12.2010 - 08:16
2

Requêtes SQL simples - pas de trucs REPLACE compliqués nécessaires:

update wp_options set option_value = 'http://mynewdomain.com' where option_name = 'siteurl';

update wp_options set option_value = 'http://mynewdomain.com' where option_name = 'home';

Utilisez ceux avec PHPMyAdmin ou tout autre moyen que vous préférez pour accéder à la base de données.

    
réponse donnée Mark 23.12.2010 - 05:31
1

C’est une très vieille question, mais comme je l’ai trouvée en cherchant autre chose, je pensais l’ajouter pour référence future.

Je pense que la manière la plus simple et la plus complète de procéder consiste à utiliser searchreplacedb2.php. Vous pouvez le trouver ici: enlace avec une explication de son utilisation.

Cela m’a certainement fait gagner beaucoup de temps avec la migration des environnements de dev vers des environnements réels sur mes sites wordpress.

Assurez-vous simplement de le supprimer d'un serveur public une fois que vous avez terminé!

    
réponse donnée MatthewLee 19.04.2013 - 22:02
1

Assurez-vous que la nouvelle base de données est sélectionnée, puis exécutez des mises à jour SQL et des commandes de remplacement sur les tables, notamment wp_options, wp_posts, wp_postmeta.

Utilisez le code ci-dessous et remplacez vos anciennes et nouvelles URL par des barres obliques. Modifiez également le cas échéant les valeurs de préfixe de la table, le cas échéant (c.-à-d. Wp_)

UPDATE wp_options SET option_value = replace(option_value, 'http_www.oldurl', 'http_www.newurl') WHERE option_name = 'home' OR option_name = 'siteurl';    
UPDATE wp_posts SET guid = replace(guid, 'http_www.oldurl','http_www.newurl');    
UPDATE wp_posts SET post_content = replace(post_content, 'http_www.oldurl', 'http_www.newurl');    
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http_www.oldurl','http_www.newurl');
    
réponse donnée user129645 14.10.2017 - 22:31

Lire d'autres questions sur les étiquettes