Cet article fournit des instructions détaillées sur la résolution de divers problèmes de compatibilité avec les bases de données MySQL, notamment les problèmes de compatibilité et les erreurs de collationnement des tables.
Questions de compatibilité
Afin d'éviter les problèmes d'incompatibilité des bases de données, assurez-vous que les versions des bases de données entre les serveurs de construction et d'installation sont aussi proches que possible. Si la sauvegarde a été créée sur une version de base de données plus récente que celle du serveur d'installation, vous risquez de rencontrer des problèmes.
Il est préférable de s'assurer que le serveur sur lequel s'exécute le programme d'installation a un numéro de version identique ou supérieur à celui de l'endroit où il a été créé. Si les versions majeure et mineure sont identiques ou proches (par exemple, [5.7 à 5.6]), la migration devrait fonctionner sans problème. Une paire de versions [5.7 à 5.1] est plus susceptible de causer des problèmes, à moins que vous n'ayez une configuration très simple. Si les versions sont trop éloignées, demandez à votre hébergeur de mettre à jour le moteur MySQL sur ce serveur.
Solution 1 : FORMAT UTF8MB4
Si la version actuelle du serveur MySQL détectée est inférieure à 5.5.3 (version du 8 avril 2010), le support des tables utf8mb4 ne fonctionnera pas. Le format utf8mb4 n'est supporté que dans le serveur MySQL 5.5.3+. Il est fortement recommandé de mettre à jour votre version du serveur MySQL sur ce serveur afin d'être plus compatible avec les versions récentes de WordPress et d'éviter les problèmes d'erreurs d'installation.
Solution 2 : UTF8 INPUTS
Si des caractères non ASCII sont détectés dans la chaîne de connexion à la base de données et que le serveur MySQL n'est pas configuré correctement, vous ne pourrez pas vous connecter. Ce problème peut être résolu en mettant à jour la configuration MySQL my.ini.
Ajoutez le paramètre character_set_server=utf8 sous [mysqld] et redémarrez le serveur de base de données. Il se peut que cette valeur doive simplement être décommentée.
Solution 3 : MARIA-DB SETUPS
Si une version de 10.N.N apparaît, la distribution de la base de données est une version MariaDB de MySQL. Bien que les distributions soient très proches, il existe quelques différences subtiles. Certains systèmes d'exploitation indiqueront la version comme "5.5.5-10.1.21-MariaDB" montrant la corrélation entre les deux. Veuillez consulter la page en ligne MariaDB versus MySQL - Compatibilité pour plus de détails.
Veuillez noter que certains messages sont simplement des avis. Il est fortement recommandé de poursuivre le processus d'installation et de surveiller de près le fichier installer-log.txt ainsi que le rapport d'installation qui se trouve à l'étape 3 du programme d'installation. Veillez à ce qu'il n'y ait pas d'avis, d'avertissements ou d'erreurs dans ces fichiers afin de vous assurer que le processus d'installation n'a pas détecté d'erreurs. Si des problèmes sont détectés, veuillez consulter les pages FAQ et voir la question "Comment résoudre les erreurs de base de données ou les avertissements généraux sur le rapport d'installation ?"
Solution 4 : CRÉER DES TABLES
La création de tables dans MySQL et MariaDB est très proche ; cependant, il y a quelques petites différences qui peuvent parfois (mais pas souvent) causer des problèmes. Pour connaître les différences entre les deux systèmes, consultez les deux ensembles de documentation ici :
Comme vous pouvez le voir, il n'y a pas de correspondance univoque (MariaDB a des options que MySQL n'a pas), donc lorsque vous essayez d'exécuter une requête CREATE qui a fonctionné sur MariaDB mais qui a une option de table que MySQL ne supporte pas, il peut y avoir un échec. La solution actuelle consiste à supprimer les options de table incriminées du dump de la base de données en effectuant une recherche et un remplacement manuels dans le fichier.
Questions relatives à l'assemblage des tableaux
Comment résoudre les erreurs de mode de compatibilité et de "collation inconnue" ?
Il y a quatre façons de résoudre ce problème. L'option 1 est la plus rapide, la plus facile et la plus sûre.
Aperçu de la collation inconnue
Une erreur "Collation inconnue" signifie que le serveur MySQL installé (serveur cible) est plus ancien que le moteur MySQL sur lequel vous avez créé la sauvegarde. Un message d'erreur tel que :
ERROR database error write 'Unknown collation : 'utf8mb4_unicode_ci'
sera déclenché car la version de MySQL utilisée ne supporte pas ce format de table. Vous pouvez comparer la version du serveur MySQL en cliquant sur le bouton "Tester la connexion" dans le programme d'installation ou en consultant le fichier installer-log.txt. Le résultat ressemblera à quelque chose comme :
VERSION MYSQL : Ce serveur : 5.4.22 - Serveur de construction : 5.7.10
Option 1 - Mise à jour du logiciel de la base de données
La façon la plus propre et la plus sûre de résoudre le problème de "Collation inconnue" est de mettre à jour votre serveur MySQL cible avec la même version ou une version plus récente que celle où la sauvegarde a été créée. Les erreurs de format les plus courantes sont les suivantes :
- utf8mb4_unicode_ci : Le serveur MySQL 5.5.3+ est requis.
- utf8mb4_unicode_520_ci : Le serveur MySQL 5.6+ est requis.
Meilleure solution : La meilleure et la plus simple façon de résoudre ce problème est de demander à votre hébergeur de déplacer votre compte vers un serveur MySQL qui supporte le type de collation dont vous avez besoin (voir l'exemple ci-dessus). Donnez-leur simplement le message d'erreur que vous obtenez et ils vous aideront à vous déplacer vers le bon serveur.
La plupart des hébergeurs ne mettront pas à niveau le serveur sur lequel se trouve votre site, mais ils devraient être en mesure de déplacer facilement votre compte vers un serveur plus récent. Il s'agit d'une pratique très courante et un bon hébergeur devrait pouvoir vous aider assez facilement.
Si vous utilisez une version inférieure à 5.5.3, vous utilisez une version très obsolète du serveur MySQL. La version 5.5.3 a été publiée en 2010, ce qui signifie que la version du serveur MySQL que vous utilisez est encore plus ancienne. Nous encourageons vivement les utilisateurs à travailler avec leurs hébergeurs pour utiliser des logiciels à jour afin d'améliorer la sécurité et les performances et de rester en conformité avec les mises à jour du noyau de WordPress. Ne laissez pas un hébergeur pourri utiliser un logiciel obsolète sur votre site.
Option 2 - Jeu de caractères et collation par défaut
Dans le programme d'installation, à l'étape 2, dans les options, la case à cocher "Legacy" n'existe plus. Cependant, elle est maintenant détectée et définie automatiquement. Si le jeu de caractères et la collation ne sont pas explicitement définis, un avis apparaîtra indiquant que le jeu de caractères et la collation par défaut seront utilisés.
Lors de la création d'une table de base de données, il se peut que la version de MySQL utilisée ne prenne pas en charge le type de collation de la version de MySQL dans laquelle la table a été créée. Dans ce cas, le programme d'installation se rabat automatiquement sur le type de collation pour tenter de créer la table.
Option 3 - Exécuter le mode de compatibilité
Le mode de compatibilité Mysqldump permet de produire un script SQL de base de données plus compatible avec d'autres systèmes de base de données ou avec des serveurs MySQL plus anciens.
The Duplicator supporte plusieurs modes de compatibilité, tous disponibles uniquement lorsque le mode mysqldump est activé dans le plugin. Le mode de compatibilité peut être activé lors de la construction d'une sauvegarde en utilisant l'option mysqldump.
Le Duplicator n'autorise le mode de compatibilité que pendant le processus de création. Il n'est pas autorisé lors de la création de modèles ou de programmes. La raison de cette configuration est de décourager l'utilisation de ces paramètres et de résoudre le vrai problème, à savoir la mise à jour de votre serveur de base de données.
Mises à jour de la base de données : Le mode de compatibilité ne doit être utilisé qu'en dernier recours. L'approche recommandée pour résoudre les problèmes de base de données consiste à s'assurer que les deux serveurs de base de données sont à jour et que leurs numéros de version sont très proches (voir l'option 1). Par exemple, si le serveur de base de données sur lequel vous avez créé la sauvegarde est la version 5.7.5, le serveur de base de données sur lequel vous installez la sauvegarde doit être au moins de la version 5.7.N. Demandez à votre hébergeur ou à l'administrateur du serveur de mettre à jour le serveur MySQL vers une version plus récente si possible. Si votre hébergeur ne procède pas à une mise à jour récente, demandez-lui de mettre à jour le serveur vers la version la plus récente possible.
Préservation des données : Bien qu'il existe plusieurs solutions de contournement sur Internet (option 4) expliquant comment modifier le fichier SQL actuel ou utiliser le mode de compatibilité mysqldump, le principal problème sous-jacent est que vous avez stocké des données dans un format et que vous allez maintenant les convertir. Ces techniques peuvent entraîner des pertes de données et des problèmes d'incompatibilité par la suite. La bonne approche consiste à mettre à jour le logiciel MySQL.
Envisagez d'essayer les deux modes :
- Duplicator supporte actuellement deux modes différents : Mysqldump et PHP Mode (voir l'option Paramètres " Sauvegardes ").
- Si vous rencontrez des problèmes de caractère et que vous êtes à court d'options, vous pouvez envisager d'essayer de construire la base de données dans les deux modes pour voir si l'un ou l'autre résout les problèmes.
Option 4 - Configurations manuelles
Ces options sont destinées aux utilisateurs avancés et doivent être exécutées avec prudence. Elles nécessitent la mise à jour du script database.sql ou la mise à jour des types de collation des tables de la base de données source. Vous trouverez ci-dessous trois approches différentes ; une seule option est nécessaire pour résoudre le problème.
Mise à jour de database.sql
Pour les problèmes de "collation inconnue", vous pouvez essayer les étapes suivantes :
- Extraire manuellement le fichier zip de l'archive.
- Ouvrez le fichier database.sql avec le bloc-notes et effectuez une recherche et un remplacement sur les collations. Par exemple, vous pourriez :
- remplacer : 'utf8mb4' par 'utf8'
- remplace : 'utf8_unicode_520_ci' par 'utf8_general_ci'
Essayez toujours ces options dans un bac à sable et jamais sur un site de production jusqu'à ce que vous soyez satisfait des résultats.
Accédez ensuite au fichier installer.php sur le serveur et choisissez Avancé et cochez "Extraction manuelle".
Vous pouvez également essayer avec d'autres collations (par exemple, remplacez "collation_type_1" par "collation_type_2").
Mise à jour de la base de données source avec le code
Cette option exige que vous connaissiez bien votre système et que vous ayez fait des sauvegardes à l'avance. Le script vous permettra de modifier la collation sur le serveur de compilation afin qu'elle soit prise en charge par le serveur cible. Le script complet peut être consulté sur Stack Overflow à l'adresse suivante : http://stackoverflow.com/a/29939906/2808424
Mise à jour de la base de données source avec l'IDE
Si vous ne vous sentez pas à l'aise pour exécuter le code ci-dessus, vous pouvez également utiliser un IDE ou un outil GUI qui vous permettra de modifier manuellement les collations des tables, soit avec des instructions SQL, soit par l'intermédiaire d'une interface. Encore une fois, ces options exigent que vous compreniez bien votre système et que vous ayez fait des sauvegardes à l'avance.
Vous trouverez ci-dessous des instructions faciles à suivre, étape par étape, pour mettre à jour les collations via un IDE tel que phpMyAdmin :