+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Futur Membre du Club
    Inscrit en
    mai 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : mai 2007
    Messages : 89
    Points : 19
    Points
    19

    Par défaut Sauvegarde de bd avec php

    Bonjour,
    Pour un site, je dois proposer une sauvegarde de la bd dans la partie admin du site, car il est difficile d'envoyer les utilisateurs sur phpmyadmin. En cherchant sur internet,je suis arrivé à ce script php :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $host = 'lhost';
    $username = 'utilisateur';
    $psw = 'mot_de_passe';
    $db = 'nom_database';
    $username =escapeshellcmd($username);
    $psw =escapeshellcmd($psw);
    $host =escapeshellcmd($host);
    $db =escapeshellcmd($db);
    echo 'sauvegarde db '.$db.'<br>';
    $fichier="chemin_repertoire/dump_".$db."_".date("d-m-Y-H-i-s").".sql";
    $command = "mysqldump -u$username -p$psw -h$host $db > $fichier";
    system($command, $result);
    echo $result;
    J'obtiens bien un fichier de sauvegarde qui comprend pour chaque table drop, create puis insert into comme lorsque je fais une sauvegarde par phpmyadmin, mais insert into ne comporte pas les entêtes de colonnes
    INSERT INTO `articles` VALUES (7,3,'','',''
    au lieu de
    INSERT INTO `articles` (`id_article`, `id_rubrique`, `surtitre`...) VALUES(7,3,'','',''
    et seulement un nombre limité de valeurs à insérer (1 enregistrement et une partie du second).
    Grave pour faire une restauration.
    Où est l'erreur ?
    Merci

  2. #2
    Expert Confirmé Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2011
    Messages
    1 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2011
    Messages : 1 898
    Points : 3 209
    Points
    3 209

    Par défaut

    salut,

    ça se paramètre dans le formulaire de phpmyadmin qui crée le fichier de sauvegarde de la bd...y a plus ou moins d'options selon la version...

    mais les entête c'est pas grave, c'est qu'il remplit les colonnes dans l'ordre d'apparition avec les valeurs de manière implicite...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  3. #3
    Futur Membre du Club
    Inscrit en
    mai 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : mai 2007
    Messages : 89
    Points : 19
    Points
    19

    Par défaut

    Bonjour,
    Merci de ta réponse, mais le script php a justement pour but d'éviter de passer par phpmysql qui fonctionne tout à fait normalement. phpmysql est totalement étranger à ce script et son paramétrage ne peut pas avoir d'incidence.

  4. #4
    Expert Confirmé Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2011
    Messages
    1 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2011
    Messages : 1 898
    Points : 3 209
    Points
    3 209

    Par défaut

    si tu es sur un dédié tu devrais mettre en place un système de réplication qui existe de base dans mysql...


    sinon comme je te le disais préciser les colonnes où tu insères ne sert à rien dans un dump (à part pour la relecture par un humain) ou si tu as à n'insérer que certaines valeurs ou si c'est fait en ne respectant pas l'ordre par défaut des colonnes...

    sinon il insert juste les valeurs dans l'ordre des colonnes par défaut donc mysql ne le précise pas... en plus ça fait gagner de la place à chaque apparition d'insert...

    faut lire la doc, tu devrais rajouter:
    • -c ou --complete-insert si tu veux voir apparaitre les colonnes (même si comme je te l'ai dit en pratique c'est inutile)
    • -e ou --extended-insert pour engendrer des inserts multiples par commande, ce qui va accélérer l'insertion


    qu'est ce que tu appelles incomplet montre un exemple des lignes originale et de leur équivalent dans la sauvegarde?

    s'il y a une erreur il s'arrête ça peut être du à ça... regarde les log pour voir si ça te parle d'un problème
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  5. #5
    Futur Membre du Club
    Inscrit en
    mai 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : mai 2007
    Messages : 89
    Points : 19
    Points
    19

    Par défaut

    Je crois bien que j'ai posé cette question à tord. Ce matin, je retrouve mon fichier de sauvegarde complet. Etait-ce la fatigue d'hier soir ? Je suis pourtant certain de n'avoir pas rêvé ! Etait-ce un temps de réaction du serveur ? Mais ce temps me semble bien long ! Et en y ajoutant le paramètre -c ou -e, je retrouve bien les entêtes de colonnes.
    Je m'excuse donc de cette question qui n'en était pas une.

    Le système de réplication dont tu parles est intéressant car je suis Je suis sur un serveur dédié. J'y ai accès par cpanel et par VHM. Mais là, je n'ose pas toucher car je n'y connais rien.

    Merci

  6. #6
    Expert Confirmé Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2011
    Messages
    1 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2011
    Messages : 1 898
    Points : 3 209
    Points
    3 209

    Par défaut

    ça revient à avoir 2 serveur mysql, un maitre et un esclave et du coup c'est surtout utile si tu as 2 dédiés car si le dédié crash ta sauvegarde dessus serait perdue...

    de la même manière que là tu dois transférer régulièrement tes sauvegardes ailleurs sinon tu ne seras pas plus avancé...

    oublie pas si c'est bon pour toi
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  7. #7
    Futur Membre du Club
    Inscrit en
    mai 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : mai 2007
    Messages : 89
    Points : 19
    Points
    19

    Par défaut

    Oui, c'est bon pour moi et je te remercie.
    A plus, surement !

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •