Importer ou dupliquer un site sous Magento

Importer ou dupliquer un site sous Magento

Le 05/04/2009, dans : E-commerce

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.

Régler le problème d’import Magento avec moteur de stockage InnoDB

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 .

Import de gros fichiers volumineux sous Magento

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.

Import fichier .sql avec BigDump

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 :

  • Téléchargez BigDump
  • Uploader votre fichier d’import volumineux « dump.sql » également à la racine de votre serveur
  • Configurez votre connexion à la base de données – l.40
  • Configurer $filename         = ‘../dump.sql’; – l.47
  • Modifier define (‘MAX_QUERY_LINES’,100000);  – l.79 – l’import avec magento peu planter si cette valeur n’est pas assez importante
  • Rajouter pour éviter le problème de Inno DB
$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

Import de gros fichier avec Magento et Bigdump

No Responses to “Importer ou dupliquer un site sous Magento”

Leave a Reply