Obtenez le meilleur plugin WordPress Backup
& Migration dès aujourd'hui
Obtenir Duplicator maintenant

Documentation sur le duplicateur

Documentation, matériaux de référence et tutoriels pour Duplicator

Gestion des problèmes d'écriture dans la base de données

Cet article fournit des instructions détaillées sur la résolution de divers problèmes liés aux bases de données MySQL, notamment les erreurs d'écriture, les échecs de création de bases de données, les problèmes de compatibilité et les erreurs de collationnement des tables.

Erreurs d'écriture dans la base de données

Si le serveur de destination est sous MySQL 5.7+ et que le journal du Duplicator montre des erreurs telles que : ERROR database error write '...', il se peut que vous rencontriez des problèmes lors de l'exécution de MySQL en mode strict. Si c'est le cas, essayez les options suivantes :

Messages d'erreur courants

  • DB ERROR : Impossible d'obtenir la requête CREATE pour la table wp_XYZ. Informations incorrectes dans le fichier : './database_store/wp_XYZ.frm'
  • ERREUR DE BASE DE DONNEES : Cette fonction n'a aucune des valeurs DETERMINISTIC, NO SQL, ou READS SQL DATA dans sa déclaration et son enregistrement binaire...
  • L'espace disque pour la table xxx existe. Veuillez SUPPRIMER l'espace de stockage avant de procéder à l'IMPORTATION.

Solution 1

Pour les erreurs d'écriture générales, il y a quelques options à considérer. Essayez-les dans l'ordre où elles sont présentées. La solution la plus rapide est l'OPTION A. Toutefois, pour que l'option soit permanente sur le serveur, envisagez l'OPTION B.

    OPTION A

    • Activer le mode avancé du programme d'installation.
    • Sous Options " Base de données " Paramètres d'extraction, sélectionnez Personnalisé pour les paramètres de mode et entrez NO_ENGINE_SUBSTITUTION dans la zone de texte.
    • Poursuivez et terminez le processus d'installation.

    OPTION B

    • Ouvrez ce fichier dans le bloc-notes : C:\wamp64\bin\mysql\mysql5.7.9\my.ini
    • Ajoutez la dernière ligne au fichier :
      [mysqld]
      port = 3306
      sql_mode=NO_ENGINE_SUBSTITUTION
    • Redémarrer le serveur MySQL (les hébergeurs de budget peuvent avoir besoin de contacter leur fournisseur d'hébergement).
    Si les OPTIONS A/B ne fonctionnent pas, procédez comme suit :
    • Connectez-vous à votre serveur en tant que root et créez le fichier /etc/mysql/conf.d/disable_strict_mode.cnf.
    • Ouvrez le fichier et entrez ces deux lignes :
      [mysqld]
      sql_mode=IGNORE_SPACE, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION
    • Redémarrez MySQL en exécutant : $ sudo service mysql restart

    La procédure ci-dessus provient de serverpilot.io.

    Solution 2

    Résoudre les problèmes d'écriture pour les requêtes de création liés au message d'erreur suivant :
    EXCEPTION message : DB ERROR : Impossible d'obtenir la requête CREATE pour la table wp_XYZ. Informations incorrectes dans le fichier : './database_store/wp_XYZ.frm'

    • Exécutez une réparation de la base de données sur votre site WordPress actuel.
    • Dans le programme d'installation, étape 2, onglet Tables, décochez le drapeau d'importation pour la table à l'origine du problème.
    • Une autre solution consiste, lors de la création d'une sauvegarde à l'étape 1, à exclure la table en question de l'ajout.

    Solution 3

    Résoudre les problèmes d'écriture pour les fonctions liées au message d'erreur suivant :
    DATABASE ERROR : This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the lesssafe log_bin_trust_function_creators variable)

    Exécutez la commande suivante dans la console MySQL OU ajoutez la commande suivante au fichier de configuration mysql.ini :

    SET GLOBAL log_bin_trust_function_creators = 1 ;
    log_bin_trust_function_creators = 1

    Ce paramètre assouplit la vérification des fonctions non déterministes. Les fonctions non déterministes sont des fonctions qui modifient les données (c'est-à-dire qui contiennent des instructions de mise à jour, d'insertion ou de suppression).
    Pour plus d'informations, voir ici. Pour plus de détails, voir cet article.

    Si votre hébergeur n'autorise pas les paramètres ci-dessus, contactez-le directement ou envisagez de travailler avec le développeur qui a écrit les fonctions et de les faire réévaluer pour qu'elles fonctionnent correctement avec les exigences du moteur de base de données.

    Solution 4

    Lors d'une installation, si vous recevez un message tel que celui présenté ci-dessous, il est probable que vous deviez supprimer l'un des fichiers tablename.ibd, qui n'a pas été correctement supprimé lors du processus de suppression de la table de base de données.

    Le tablespace pour la table xxx existe. Veuillez SUPPRIMER l'espace de stockage avant de procéder à l'importation
    . Pour une présentation complète de toutes les solutions possibles à ce problème, consultez cet article de stack-overflow.

    Échec de la création de la base de données

    Un message tel que "Unable to create database..." est reçu lors de l'utilisation de l'action de création de base de données.

    Solution

    "Impossible de créer une base de données..." signifie généralement que votre hébergeur ne prend pas en charge la création de bases de données par le biais du code PHP. Dans ce cas, vous devrez créer une base de données à l'aide des outils qu'ils fournissent.

    Sur la plupart des hébergeurs, vous pouvez le faire via le cpanel. Veuillez contacter votre hébergeur pour savoir comment créer une nouvelle base de données. Les utilisateurs de Duplicator Pro devraient pouvoir utiliser l'onglet de connexion cPanel pour se connecter à leur compte cPanel et créer la base de données via l'interface d'installation cPanel. Vous pouvez également utiliser les modes d'importation ou d'écrasement.

    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 - Activer le contrôle de l'héritage

    Dans le programme d'installation, à l'étape 2, sous les options, il y a un paramètre intitulé "Legacy" et intitulé "Apply legacy collation fall-back support for unknown collations types" (Appliquer la collation héritée pour les types de collation inconnus). Cochez cette case pour appliquer une collation héritée et continuer l'installation.

    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 rabattra sur un ancien type de collation pour tenter de créer la table. Cette valeur ne doit être vérifiée que si vous recevez une erreur lors de l'installation de la base de données.

    Par exemple, si la sauvegarde a été construite sur MySQL 5.7 avec un type de collation de table 'utf8mb4_unicode_520_ci' et que vous exécutez l'installateur sur un moteur MySQL 5.5 plus ancien qui ne supporte pas ce type, une erreur sera générée. Si cette option est cochée, l'ancienne configuration essaiera d'utiliser 'utf8mb4_unicode_520', puis 'utf8mb4', puis 'utf8' et ainsi de suite jusqu'à ce qu'il n'y ait plus d'options. Bien que cette option fonctionne dans la plupart des cas, l'option 1 ci-dessus reste l'option recommandée et la plus sûre.

    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 :

    1. Extraire manuellement le fichier zip de l'archive.
    2. 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 :

    • phpMyAdmin
    • Instructions SQL
    • MySQL Workbench

    Voir aussi :
    Fournisseurs d'hébergement recommandés pour Duplicator ?
    http://dev.mysql.com/downloads/mysql
    https://make.wordpress.org/core/2015/04/02/the-utf8mb4-upgrade

    Cet article a-t-il été utile ?

    Articles connexes