Rechercher et remplacer dans MySQL

Logo MySQL

Si vous avez changé l’url d’un site – comme par exemple une migration de WordPress d’un nom de domaine à un autre – et que vous aviez fait plein de jolis liens dans votre blog d’un post à un autre, vous avez peut être envie de chercher et de remplacer les occurences de l’ancienne URL dans la base de données MySQL ?

La procédure est assez simple même si je ne sais pas comment créer une commande vérifiant toutes les tables …

En gros un exemple de code serait :

UPDATE wp_posts SET post_content = replace( post_content,'blog.gonzaguedambricourt.com','gonzague.me')

La commande va donc chercher dans la table wp_posts les occurences de blog.gonzaguedambricourt.com et les remplacer par gonzague.me

Utilisez un outil comme phpMyAdmin pour faire une recherche du terme à remplacer dans toute votre base et ensuite adaptez le code pour faire les remplacements là où cela s’impose :)

Addendum :

Je viens de mettre de côté quelques unes des requêtes SQL à exécuter dans le cas de la migration d’un blog sous WordPress d’un domaine à un autre. L’idée de ces commandes est donc de remplacer l’ancienne adresse par la nouvelle. Si le nom de domaine est similaire ( par exemple de emmanueldetaillac.fr à blog.emmanueldetaillac.fr ) exécutez ces commandes *avant* d’aller modifier quoi que ce soit sur votre nouvelle installation.

Les commandes ( à exécuter une par une – faites un backup avant ) :

UPDATE wp_posts SET post_content = replace( post_content,'emmanueldetaillac.fr','blog.emmanueldetaillac.fr')

UPDATE wp_posts SET guid = replace( guid,'blog.blog.emmanueldetaillac.fr','blog.emmanueldetaillac.fr')

UPDATE wp_postmeta SET meta_value = replace( meta_value,'emmanueldetaillac.fr','blog.emmanueldetaillac.fr')

UPDATE wp_options SET option_value = replace( option_value,'emmanueldetaillac.fr','blog.emmanueldetaillac.fr');

UPDATE wp_comments SET comment_author_url = replace( comment_author_url,'emmanueldetaillac.fr','blog.emmanueldetaillac.fr');

UPDATE wp_comments SET comment_author_url = replace( comment_author_url,'emmanueldetaillac.fr','blog.emmanueldetaillac.fr');

UPDATE wp_comments SET comment_content = replace( comment_content,'emmanueldetaillac.fr','blog.emmanueldetaillac.fr');

Grâce à cet ensemble de requêtes, vous allez mettre à jour les liens dans vos posts, les adresses des fichiers (images etc), votre url dans vos commentaires, etc.

Tags:

  • Nico

    Merci pour cette information, vous venez de me tirer une belle épine du pied :)

  • meeshkah

    Merci infiniment, cela fait une semaine que je ne comprenais pas pourquoi je n’avais plus de CSS sur mon wordpress, pourquoi celui-ci mettais plusieurs secondes à charger, et après avoir trouvé la raison, que je m’arrachais les cheveux à le faire manuellement…
    Favoris !

  • layla

    Bonjour,
    J’ai le mm probleme mais avec Moodle,
    comment je peux adapter votre requete a moodle??

  • peexel

    Merci pour l’info, après en avoir testé plusieurs c’est celui qui m’a permis de poursuivre sereinement l’installation (transfert) de mon blog.