Déployer sa base de données Prestashop avec BigDump

Voici une problématique qui surviendra peut-être dans votre cas, lors de votre passage en production avec votre boutique. Peut-être que vous voudrez importer votre base de données sur chez hébergeur, mais du coup impossible de l’importer et là c’est le drame…



La problématique
Imaginez, vous avez déjà votre boutique qui fonctionne en local sur votre ordinateur, tout est bon et vous désirez passer en production. Vous migrez donc tous vos fichiers via FTP et vous voulez ensuite importer la base de données sur votre hébergeur. Le problème c’est que parfois si la base est trop grande ou si des enregistrements refusent de rentrer… ou que PHPmyAdmin ne fait pas ce qu’on lui dit… il faut faire autrement et cette solution s’appelle BigDump.

C’est quoi BigDump ?
BigDump est un script PHP qui permet d’importer des données dans votre base de données Mysql. Ce script est ultra-puissant, sont approche est un peu différente de l’import de PHPmyAdmin, car l’opération peut se faire aussi progressivement (via Ajax), du coup on peut importer des gros volumes même sur du mutualisé, sans forcément avoir des problèmes avec les limitations posées par l’hébergeur.

Quand faut-il faire appel à BigDump ?

Vous le saurez bien assez vite, en principe quand vous ne pouvez pas importer avec PHPmyAdmin, cela peut se présenter par exemple dans les cas suivants :

> pas assez de mémoire
> temps d’exécution trop long
> plantage des requêtes
> lors d’erreurs inconnues

Mise en pratique
Vous avez vu le camion en guise de logo du billet ? Oui ça mérite bien ça, ce script c’est un camion qui déplace des montagnes. La première chose à faire c’est de télécharger le script sur le site officiel de Bigdump. Ensuite vous mettez le fichier « bigdump.php » dans un nouveau répertoire de votre choix sur votre votre hébergement et vous pouvez mettre dans ce même dossier le fichier SQL correspondant à votre base de données.

A présent on va modifier le fichier bigdump.php pour lui donner quelques paramètres. Ce qui est prioritaire surtout c’est d’indiquer le nom du serveur, l’utilisateur, la base de données et le mot de passe (ici je fais un import en local) et pour finir le nom du fichier (prestashop.sql). Passez aussi la valeur $linespersessions à 30000 pour éviter trop de limitations.

$db_server   = 'localhost';
$db_name     = 'prestashop_bigdump';
$db_username = 'root';
$db_password = '';

// Other settings (optional)

$filename           = 'prestashop.sql';     // Specify the dump filename to suppress the file selection dialog
$ajax               = true;   // AJAX mode: import will be done without refreshing the website
$linespersession    = 30000;   // Lines to be executed per one import session
$delaypersession    = 0;      // You can specify a sleep time in milliseconds after each session

Un peu plus loin dans le script vers la ligne 104, je recommande aussi de modifier la valeur de MAX_QUERY_LINES à 30000.

define ('MAX_QUERY_LINES',30000);      // How many lines may be considered to be one query (except text lines)

On lance la bête !
Ensuite il suffit d’appeler le script en appelant le fichier bigdump.php, dans mon cas je lance l’appel du script en saisissant l’adresse suivante : http://localhost/test/prestashop_bigdump/bigdump.php

On clique sur le lien « Start Import »

Et là ça travaille dur… les requêtes s’enchaînent à max !

Et c’est fait trop beau non ? Et là on peut même faire un don à notre ami Alexey Ozerov (auteur du script).



Bilan

Bon, ici je vous ai montré un fonctionnement basique mais généralement cela suffit. Il existe d’autres options dans le script, vous pouvez vous référer à la documentation officielle pour en savoir plus. Dans tous les cas où je n’arrivais pas à déployer une base de données ce script m’a toujours sorti de l’impasse. Parfois la vitesse d’import est juste phénoménale par rapport à PHPmyAdmin, donc au cas où n’hésitez pas à le tester, je vous le recommande vivement… en plus c’est gratuit… que demande de peuple ?

Notez mon billet, Google va adorer :
1 étoiles - J'aime pas !2 étoiles - Bof !3 étoiles - Bien !4 étoiles - Très bien !5 étoiles - Génial ! (Soyez le premier à noter ce billet)
Loading...

7 commentaires sur “Déployer sa base de données Prestashop avec BigDump”

  1. J’utilise bigdump pour l’un de mes sites ayant trop de ligne pour que Phpmyadmin le gère et c’est vraiment très puissant en plus on peut facilement mettre en place un cron pour une sauvegarde automatique.

    A l’inverse je pensais également l’utilisé pour réimporter une base de donnée tout les soir sur une boutique « démo » prestashop… a voir mais je pense que c’est une solution viable.

  2. Bonjour,
    Merci pour cette découverte !
    Une question si vous avez le temps : est-ce que je peux importer la base de données de ma boutique (Presta 1.4.6.2) dans une boutique de base (une installation fraîche) en version 1.5.2 ?
    J’ai fait un essai sans BigDump (que je ne connaissais pas) et ça n’a pas fonctionné…
    Est-ce que j’ai une chance que ça marche avec BigDump ?
    J’ai un gros doute 😉
    Merci d’avance.
    Katia

    1. Bonjour,
      Ah non effectivement ça ne marchera pas, les relations sont trop différentes dans cette version. Dans votre cas ce qu’il faudra utiliser c’est le module de migration (mise à jour en 1 clic) pour effectuer le passage vers cette nouvelle version. Avant toute chose, je vous invite à faire un tour sur le forum de Prestashop 1.5, pour voir comment les autres s’en sortent et aussi consulter les premiers retours suite à la migration.

      1. Merci +++ pour cette réponse claire qui m’enlève mes dernières illusions sur cette fausse solution !
        J’avais déjà parcouru le forum mais pas trouvé une réponse évidente comme la vôtre à mon interrogation.
        J’adore Prestashop qui me permets de vendre mes créations sans gros budget et sans beaucoup de connaissances techniques mais arrive un moment où il faudrait avoir les moyens de faire appel à un pro…
        Encore merci et bonne journée.
        K.

  3. Bonjour, je suis entrin de tester votre méthode pour l’import du dump avec bigdump, mais malheureusement j’ai le message suivent:
    BigDump: Staggered MySQL Dump Importer v0.36b

    Processing file: cheapnchic.sql

    Starting from line: 1

    Error at the line 359: DROP TABLE IF EXISTS `prefpres_ae_notification`;

    Query: —

    DROP TABLE IF EXISTS `prefpres_ae_notification`

    MySQL: Cannot delete or update a parent row: a foreign key constraint fails

    Stopped on error

    Est ce que vous pouvez m’aider svp.
    Cordialement

    1. Bonjour,

      Il faudrait essayer de regarder dans le sens de passer « par-dessus » les erreurs générées par l’import.

      Peut-être qu’il y a une option dans le script pour gérer ce type de cas, ou peut-être encore essayer d’augmenter / diminuer le pack de lignes transférés au moment de l’exécution.

      Merci pour votre visite !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *