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

