Si vous êtes certain qu'aucun des champs à mettre à jour n'est sérialisé, les solutions ci-dessus fonctionneront bien.
Cependant, si l'un des champs devant être mis à jour contient des données sérialisées, une requête SQL ou une simple recherche / remplacement sur un fichier de vidage interrompra la sérialisation (sauf si la chaîne remplacée a exactement le même nombre de caractères que la chaîne recherchée).
Pour être sûr, un champ "sérialisé" ressemble à ceci:
a:1:{s:13:"administrator";b:1;}
Le nombre de caractères dans les données pertinentes est codé dans le cadre des données.
La sérialisation est un moyen de convertir des "objets" dans un format facilement stocké dans une base de données, ou de transporter facilement des données d'objet entre différentes langues.
Voici une explication des différentes méthodes utilisées pour sérialiser les données d'objet, et pourquoi vous pouvez le faire, et voici un article centré sur WordPress: Données sérialisées, qu'est-ce que cela signifie et pourquoi est-ce si important? en langage simple.
Ce serait étonnant si MySQL avait un outil intégré pour gérer automatiquement les données sérialisées, mais ce n'est pas le cas, et comme il existe différents formats de sérialisation, cela n'aurait même pas de sens de le faire.
wp-cli
Certaines des réponses ci-dessus semblaient spécifiques aux bases de données WordPress, qui sérialisent une grande partie de ses données. WordPress offre un outil de ligne de commande, wp recherche-remplacement , qui ne sérialisation poignée.
Une commande de base serait:
wp search-replace 'an-old-string' 'a-new-string' --dry-run
Cependant, WordPress souligne que le guid
ne doit jamais être modifié , il recommande donc de sauter cette colonne.
Cela suggère également que souvent vous voudrez sauter la wp_users
table.
Voici à quoi cela ressemblerait:
wp search-replace 'https://old-domain.com' 'https://shiney-new-domain.com' --skip-columns=guid --skip-tables=wp_users --dry-run
Remarque: J'ai ajouté le --dry-run
drapeau afin qu'un copier-coller ne ruine pas automatiquement la base de données de quiconque. Une fois que vous êtes sûr que le script fait ce que vous voulez, exécutez-le à nouveau sans cet indicateur.
Plugins
Si vous utilisez WordPress, il existe également de nombreux plugins gratuits et commerciaux qui offrent une interface graphique pour faire de même, emballés avec de nombreuses fonctionnalités supplémentaires.
Interconnect / it script php
Interconnect / it propose un script php pour gérer les données sérialisées: outil Safe Search and Replace . Il a été créé pour être utilisé sur les sites WordPress, mais il semble qu'il puisse être utilisé sur n'importe quelle base de données sérialisée par PHP.
De nombreuses entreprises, dont WordPress lui-même, recommandent cet outil. Instructions ici, environ 3/4 en bas de la page.