Importer ou dupliquer un site sous Magento

Importer ou dupliquer un site sous Magento

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

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

6 réponses à “Importer ou dupliquer un site sous Magento

  • NV Web Concept dit :

    Voilà la solution à mon problème!
    Tout fonctionne parfaitement en suivant la doc de cet article, et celle de l'éditeur.

    Merci 😉

  • leo dit :

    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

  • leopoldo69 dit :

    je ne trouve pas le racourci pour trouver le téléchargent de bigdump

  • eric dit :

    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.
     

  • admin dit :

    Bonjour,

    Il suffit d’éditer votre fichier SQL et de mettre au tout début la directive suivante SET foreign_key_checks = 0.

    Cordialement

  • eric dit :

    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

Poster une réponse