Aller au contenu
Outils

SQL de recherche et remplacement

Changez l'URL de votre site sans corrompre les données sérialisées

Tourne dans votre navigateur. Rien n'est envoyé.

La modification

À lire avant de lancer quoi que ce soit

WordPress stocke de nombreuses options sous forme de chaînes PHP-serialized, et une chaîne sérialisée enregistre elle-même sa propre longueur en octets — s:19:"http://old-site.com". Un simple remplacement SQL modifie le texte mais pas la longueur, si bien que PHP ne peut plus désérialiser la ligne. Cela ne déclenche aucune erreur. La valeur devient simplement vide, sans prévenir.

Ce que vous perdez : la configuration des widgets, les personnalisations du thème et la plupart des réglages d’extensions. En général, vous ne vous en apercevez que plusieurs jours plus tard, et à ce moment-là la sauvegarde qui vous aurait sauvé a elle aussi disparu.

C'est pourquoi les requêtes ci-dessous ne touchent délibérément pas à wp_options.

Que déplacez-vous ?
search-replace.sql

Faites d'abord une sauvegarde de la base de données. Pas « envisagez d'en faire une » — faites-en une. Il n'y a aucune annulation possible pour un UPDATE.

À propos de SQL de recherche et remplacement

Un rechercher-remplacer SQL naïf sur une base de données WordPress casse chaque option sérialisée qu'il touche, car la longueur de chaîne stockée ne correspond plus. Cet outil génère les requêtes qui sont sûres et explique précisément lesquelles ne le sont pas.

FAQ

Questions

Puis-je changer l'URL de mon site WordPress avec un rechercher-remplacer SQL ?

Pas sans risque, et c'est le plus mauvais conseil le plus partagé dans l'univers WordPress. Beaucoup d'options sont stockées sous forme de chaînes PHP sérialisées qui enregistrent leur propre longueur en octets. Un simple remplacement SQL change le texte mais pas la longueur, donc PHP échoue silencieusement à désérialiser la ligne et la valeur disparaît tout simplement — emportant avec elle les réglages de widgets, les modifications de thème et la configuration des plugins.

Que faut-il utiliser à la place ?

WP-CLI : « wp search-replace old new --all-tables --dry-run » d'abord, puis sans --dry-run. Il comprend la sérialisation et réécrit correctement les préfixes de longueur. Si vous n'avez pas d'accès CLI, le plugin Better Search Replace fait la même chose depuis l'administration.

Faut-il mettre à jour la colonne GUID ?

Non. Le GUID est un identifiant unique permanent pour un article, pas un lien, et les lecteurs de flux s'en servent comme clé. Le réécrire fait voir à chaque abonné chaque ancien article comme un nouveau. La documentation de WordPress dit explicitement de ne pas le changer.