Qui n’a jamais pensé à pourvoir dupliquer tout simplement la distribution magento pour la mettre sur un nouveau serveur par exemple ?
Cet article vous détaille pas à pas les étapes pour pouvoir dupliquer en toute sérénité votre distribution Magento.
On se heurte souvent à un mur avec Magento avec un moteur de stockage InnoDB. Ce dernier très puissant permet l’utilisation des transactions et s’assure donc que chaque enregistrement sera soit effectué soit échoué.
L’inconvénient dans le cas de Magento se situe clairement lors d’un import. Lorsque l’on importe un fichier SQL, cette erreur revient souvent :
Cannot delete or update a parent row: a foreign key constraint fails
Et oui, souvenez vous le système InnoDB utilise les transactions et s’assure que ‘lon ne peut insérer ou modifier les tables qui sont reliées avec des clés étrangères. Donc pas d’autre solution que d’utiliser une directive MySQL en la rajoutant en 1ère ligne de votre fichier .sql
SET foreign_key_checks = 0
En ordonnant de ne pas vérifier les clés étrangères, cela vous permet de faire l’importation des données des tables dans n’importe quel ordre. Cela accélère aussi l’opération d’importation. FOREIGN_KEY_CHECKS est disponible depuis MySQL 3.23.52 et 4.0.3.
Mettre FOREIGN_KEY_CHECKS à 0 peut aussi être utile pour les opérations de LOAD DATA .
Autre inconvénient de Magento, sa lourdeur sous MySQL, en effet une distribution Magento prend minimum 120 Mo lors d’un dump dans un fichier .sql.
Gros problème, cela ne passe ni dans phpMyAdmin qui lui ne gère que les fichiers <= 50 Mo ni en copier coller dans la partie SQL.
Plusieurs solutions indiquent qu’il faut utiliser la commande system de PHP avec :
system("mysql --host --user=botre_user --password=votre_mdp < ".dirname(__FILENAME__)."dump.sql",$fp);
Sauf que certains hébergeurs (notamment mutualisés) ne vous donne pas l’autorisation d’exécuter cette commande.
Ayant testé plusieurs solutions, je vous confirme qu’il faut utiliser BigDump. Ce script en open source utilise l’Ajax pour pouvoir exécuter jusqu’à plus de 1 Go de fichier SQL. Il autorise également le CSV mais nous préfèrerons la méthode du bon vieux .sql. Voici les étapes :
$result = mysql_query("SET foreign_key_checks = 0 ");
if (!$result) die('Requête invalide : ' . mysql_error());
En le rajoutant juste après
// Start processing queries from $file
if (!$error)
{...
Résultat : Moins de 5 minutes pour importer avec succès un fichier dump.sql de 240Mo !! Voici un aperçu du traitement :

Import de gros fichier avec Magento et Bigdump


bonjour, merci c'est exactement le probleme que j'ai
j'ai voulu re-installer magento
apres avoir tout copier
je n'attaque a la base
mais quand j'importe ma sauvegarde j'ai l"erreur : Cannot delete or update a parent row….
mais je ne trouve pas comment inserer une ligne dans ma sauvegarde pour mettre : SET foreign_key_checks = 0
merci de votre aide
Bonjour,
Il suffit d’éditer votre fichier SQL et de mettre au tout début la directive suivante SET foreign_key_checks = 0.
Cordialement
Merci
j'avais compris
mais ce que je ne comprends pas c'est comment modifier ce fichier.
j'ai bien ma sauvegarde en 1290707026_db.gz mais je vois pas avec quoi editer et ajouter la ligne.
j'ai essayé en le décompressant et en l'ouvrant avec un editeur de texte, mais sans resultat.
tu l'inseres comment cette ligne ?
merci d'avance.
je ne trouve pas le racourci pour trouver le téléchargent de bigdump
bonjour, j'ai un soucis mon fichier sql ne veut pas être importé en réel via bigdump 034b, je suis toujours déconnecté. Pourtant en local cela fonctionne correctement. Je suis chez ovh, j'ai tenté toute les solutions d'importations et ovh cherche une solution depuis presque une semaine, mon sql fait +/- 180 Mo. Quelqu'un pourrait m'aider ? l'hébergeur évoque une possibilité de time limite d éxécution du script, time qu'il gère eux…. A quoi ça sert de faire un backup de sa base de données en sql si on ne sait pas ensuite l'importer en cas de pépin ….. suis perdu