Erreurs lors de l’importation d’un dump sql avec des tables innoDB ?

Comment ignorer la vérification des clés étrangères durant la restauration d’une sauvegarde
samedi 7 juin 2008
par  KreaComm’
popularité : 4%

Pour ignorer la vérification des clés étrangères (foreign key) lors de la restauration de votre dump sql, spécifiez cette directive directement dans votre script .sql AVANT l’import :

SET FOREIGN_KEY_CHECKS = 0;

A la fin de l’import dans votre script, réactivez la directive :

SET FOREIGN_KEY_CHECKS = 1;

En mode console :

mysql> SET FOREIGN_KEY_CHECKS = 0;
mysql> SOURCE mon_fichier_dump;
mysql> SET FOREIGN_KEY_CHECKS = 1;

Cela désactive la vérification et évite des problèmes spécifiques avec les tables qui doivent être chargées dans un ordre particulier.

Pour simplifier l’importation de données dans des tables qui ont des contraintes, mysqldump ajoute automatiquement la commande qui met la variable FOREIGN_KEY_CHECKS à 0, depuis MySQL version 4.1.1.

Cela vous permet de faire l’importation des données des tables dans n’importe quel ordre et accélère aussi l’opération d’importation.

Mettre FOREIGN_KEY_CHECKS à 0 peut aussi être utile pour les opérations de LOAD DATA.

Si vous n’avez pas les droits suffisants pour effectuer cette opération, passez par phpmyadmin en local (utilsateur root par défaut généralement), ensuite utilisez la fonction d’export de phpMyAdmin qui vous générera un dump avec les informations de clés étrangères en fin de script (alter table...) et évitant ainsi les erreurs de vérification de clés étrangères.



FOREIGN_KEY_CHECKS est disponible depuis MySQL 3.23.52 et 4.0.3.

Depuis la version 4.0.13, vous pouvez utiliser la commande SHOW INNODB STATUS pour avoir une explication détaillée de la dernière erreur de clé étrangère InnoDB sur le serveur.

Depuis la version 3.23.50, InnoDB ne vérifie pas la clé étrangère pour les clés étrangères ou les clés référencées qui contienent des valeurs NULL.


Commentaires