Comment corriger l'erreur de classement « utf8mb4_0900_ai_ci » lors de l'importation de la base de données WordPress

Si vous passez votre installation WordPress d'un serveur MySQL 8 à MySQL 5.7 (ou inférieur), vous rencontrerez très probablement le 1273 - Classement inconnu : 'utf8mb4_0900_ai_ci' erreur lors de la tentative d'importation de la base de données. Quels que soient les outils que vous utilisez pour importer ou exporter la base de données, vous ne pouvez pas échapper à cette erreur.

Cependant, si vous avez déjà exécuté votre blog sur un serveur MySQL 5.7 et que vous êtes récemment passé à MySQL 8 mais que vous revenez maintenant à MySQL 5.7, alors les tables WordPress principales (articles, taxonomies, options, commentaires, etc.) et tous les plugins vous avez installé sur le serveur MySQL 5.7 devrait toujours utiliser le classement « utf8mb4_unicode_520_ci ».

Vous pouvez importer toutes les tables de votre base de données qui utilisent le classement « utf8mb4_unicode_520_ci ». Vous devez donc rechercher les tables de votre base de données qui utilisent le classement « utf8mb4_0900_ai_ci » et les exclure du fichier de sauvegarde de la base de données exportée.

🔎 Trouvez quelles tables utilisent le classement « utf8mb4_0900_ai_ci »

Vous devez trouver quelles tables de votre base de données utilisent le classement "utf8mb4_0900_ai_ci" afin que nous puissions exclure ces tables lors de l'exportation de la base de données.

Si vous avez un accès SSH au serveur et les identifiants d'accès à la base de données (que vous pouvez tout à fait obtenir à partir du fichier wp-config.php), vous pouvez exécuter la commande suivante pour trouver facilement les tables avec le classement « utf8mb4_0900_ai_ci ».

mysqlshow -u nom d'utilisateur -p --status base de données | grep "utf8mb4_0900_ai_ci"

? Remplace le Nom d'utilisateur et base de données avec votre base de données et votre nom d'utilisateur dans la commande ci-dessus.

Entrez votre mot de passe utilisateur de base de données lorsque vous y êtes invité Entrer le mot de passe: et vous aurez la liste des tables utilisant le classement "utf8mb4_0900_ai_ci" dans votre base de données.

Les tables utilisant le classement « utf8mb4_0900_ai_ci » ne doivent être constituées que de plugins que vous avez installés après le passage à MySQL 8. Notez les noms des tables afin de pouvoir les exclure la prochaine fois que vous exporterez votre base de données.

Astuce

Si vous n'avez pas d'accès SSH au serveur, téléchargez le fichier de base de données .sql sur votre ordinateur et ouvrez-le avec un éditeur de texte tel que Notepad ++ et utilisez la fonction de recherche (Ctrl + F) pour trouver quelles tables utilisent le "utf8mb4_0900_ai_ci" collation.

Exporter la base de données à l'exclusion des tables de classement « utf8mb4_0900_ai_ci »

Maintenant que vous avez les noms des tables utilisant le classement « utf8mb4_0900_ai_ci », vous pouvez exporter un nouveau fichier de sauvegarde de la base de données qui n'inclut pas les tables « utf8mb4_0900_ai_ci » afin que vous puissiez l'importer dans une installation WordPress s'exécutant sur un serveur MySQL 5.7.

En supposant que vous utilisiez déjà WP-CLI pour exporter/importer la base de données WordPress, exécutez la commande suivante pour exporter votre base de données tout en excluant certaines des tables.

wp db export --exclude_tables=nom_table,nom_table,nom_table

? Remplacer nom de la table dans la commande ci-dessus avec les noms réels des tables qui utilisent le classement « utf8mb4_0900_ai_ci ».

C'est ça. Vous pouvez désormais facilement importer votre base de données WordPress sur le nouveau serveur exécutant MySQL 5.7.

? Note importante

Pour les tables de base de données que vous avez exclues de la sauvegarde, veillez à recréer manuellement leurs données sur le nouveau serveur. Étant donné que ces tables ne contiennent que des plug-ins, vérifiez si ces plug-ins offrent un moyen d'exporter des données dans les paramètres du plug-in ou reconfigurez le plug-in sur le nouveau serveur de la même manière qu'il a été configuré sur l'ancien serveur.