Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    décembre 2004
    Messages
    1 675
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : décembre 2004
    Messages : 1 675
    Points : 2 319
    Points
    2 319

    Par défaut Mysqldump et perl

    Bonjour,

    Je suis en train de me faire un script de backup en Perl.
    Sa fonction sera notamment de faire des dump de bases de données MySQL sous Windows.

    Mais voila, lorsque je lance la commande mysqldump depuis le script perl, le dump échoue et mysql revoit une erreur de connexion à la base, alors que la même commande exécutée depuis l'invite de commande fonctionne...

    Voici le code dans le script :
    Code perl :
    system("\"C:\\Program\ Files\\MySQL\\MySQL\ Server 5.1\\bin\\mysqldump.exe\" --host=$DB_HOST --user=$DB_USER -password=$DB_PASS --single-transaction $DB_DBNAME > $DB_DEST\\$DB_DBNAME-$date.sql")

    Comme vous le voyez, j'ai pourtant protégé au maximum les backslashs et les espaces !

    Voici ce que me retourne l'exécution du script :
    Code :
    mysqldump: Got error: 1045: Access denied for user 'user1'@'localhost' (using password: YES) when trying to connect
    Comment faire un mysqldump sous Windows en Perl ?

    Merci pour vos lumières
    Rédacteur et Modérateur rubrique Linux
    Articles dvp.com
    Man pages en français

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 630
    Points : 465 473
    Points
    465 473

    Par défaut

    Peux-tu mettre ce code et nous retourner le résultat :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    my $programme_dump = 'C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqldump.exe';
    my $commande       = '"' . $programme_dump . '" ' 
      . "--host=$DB_HOST "
      . "--user=$DB_USER "
      . "-password=$DB_PASS "
      . "--single-transaction $DB_DBNAME "
      . "$DB_DEST/$DB_DBNAME-$date.sql"
      ;
     
    print "[$commande]\n";
     
    system $commande;

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

  3. #3
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    décembre 2004
    Messages
    1 675
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : décembre 2004
    Messages : 1 675
    Points : 2 319
    Points
    2 319

    Par défaut

    Et voila :

    Code perl :
    1
    2
    ["C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqldump.exe" --host=localhost --user=aq1 -password=aq1 --single-transaction aq1 > C:\Users\toto\Desktop/aq1-120612.sql]
    mysqldump: Got error: 1045: Access denied for user 'aq1'@'localhost' (using password: YES) when trying to connect
    Rédacteur et Modérateur rubrique Linux
    Articles dvp.com
    Man pages en français

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 630
    Points : 465 473
    Points
    465 473

    Par défaut

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    my ($DB_DEST, $DB_HOST, $DB_USER, $DB_PASS, $DB_DBNAME) = ('C:/temp', 'localhost', 'aq1', 'aq1', 'aq1');
    my $programme_dump   = File::Spec->catfile('C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqldump.exe');
    my $fichier_resultat = File::Spec->catfile($DB_DEST, "$DB_DBNAME.sql");
     
    my $commande       = '"' . $programme_dump . '" ' 
      . "--host=\"$DB_HOST\" "
      . "--user=\"$DB_USER\" "
      . "--password=\"$DB_PASS\" "
      . "--single-transaction=\"$DB_DBNAME\" "
      . "> \"$fichier_resultat\"";
      ;
     
    print "[$commande]\n";
    system $commande;
    si ça ne fonctionne pas, copie colle la commande que le programme te donne et lance le dans le DOS.
    si toujours rien, essaye de de connecter via phpmyadmin ou en console pour voir si les paramètres que tu rentres sont exacts.

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

  5. #5
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    décembre 2004
    Messages
    1 675
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : décembre 2004
    Messages : 1 675
    Points : 2 319
    Points
    2 319

    Par défaut

    Bonjour,

    Désolé pour le temps que j'ai mis pour répondre.

    Je viens de tester ton dernier bout de code et cela fonctionne !

    Je vais donc l'utiliser. Mais je ne comprends toujours pas pourquoi les bouts de code précédents ne fonctionnaient pas. C'est un mystère...

    Merci beaucoup pour ton aide en tout cas .
    Rédacteur et Modérateur rubrique Linux
    Articles dvp.com
    Man pages en français

+ 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
  •