IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SGBD Perl Discussion :

se connecter avec le module Net::MySQL


Sujet :

SGBD Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut se connecter avec le module Net::MySQL
    Bonjour

    Je tente de me connecter avec le module Net::MySQL j'ai la synthaxe suivante

    #!/usr/bin/perl -w

    use strict;
    use IO:ipe;
    use Net::MySQL;
    use Proc::Fork;
    use POSIX qw(strftime);
    use POSIX ":sys_wait_h";


    my $mysql = Net::MySQL->new(
    # hostname => 'localhost',
    unixsocket => '/tmp/mysql.sock',
    database => 'serverwatch',
    user => 'serverwatch',
    password => 'serverwatch'
    );



    child {
    my $query = "SELECT * FROM `scheduled` WHERE id=$ARGV[0]";
    $mysql->query($query);

    if ($mysql->has_selected_record) {

    my $a_record_iterator = $mysql->create_record_iterator;
    my $record = $a_record_iterator->each;
    $query = "SELECT * FROM `task_list` WHERE id=$record->[3]";

    $mysql->query($query);

    if ($mysql->has_selected_record) {
    $a_record_iterator = $mysql->create_record_iterator;
    my $record2 = $a_record_iterator->each;

    my $remote = $record2->[3];
    my $ret = "";
    my $cmd = "";
    my $query = "SELECT * FROM `host_list` WHERE id=$record->[2]";
    $mysql->query($query);
    $a_record_iterator = $mysql->create_record_iterator;
    my $record4 = $a_record_iterator->each;

    if($remote != -1) {
    my $query = "SELECT * FROM `host_list` WHERE id=$record2->[3]";
    $mysql->query($query);
    $a_record_iterator = $mysql->create_record_iterator;
    my $record3 = $a_record_iterator->each;


    $cmd = "$record2->[2] $record4->[1] $record3->[1] $record->[4]\n";
    $ret = `$record2->[2] $record4->[1] $record3->[1] $record->[4]`;
    } else {

    $ret = `$record2->[2] $record4->[1] $record->[4]`;

    $cmd = "$record2->[2] $record4->[1] $record->[4]\n";

    }
    chomp $ret;
    my @ret_tab = split(/\|/, $ret);

    my $ret_code = 1;
    $ret_code = 0 if ($ret_tab[0] eq "OK");
    $ret_code = 1 if ($ret_tab[0] eq "ERROR");
    $ret_code = 2 if ($ret_tab[0] eq "WARNING");

    # my $time = strftime "%m-%e-%Y %H:%M:%S", localtime;
    my $time = time;

    $ret_tab[1] =~ s/\'/\\\'/g;
    $ret_tab[1] =~ s/\;/\\\;/g;
    $ret_tab[1] =~ s/\$/\\\$/g;

    $query = " INSERT INTO `log` ( `id` , `scheduled` , `date` , `return_code` , `return_msg`, `return_value`, `cmd` ) VALUES ('', '$ARGV[0]', '$time', '$ret_code', '$ret_tab[1]', '$ret_tab[2]', '$cmd');";
    print $query."\n";
    $mysql->query($query);
    # print $ret."\n";


    my $query = "SELECT * FROM `notif_list` WHERE id=$record->[7]";
    $mysql->query($query);
    print $mysql;
    $a_record_iterator = $mysql->create_record_iterator;
    my $record5 = $a_record_iterator->each;

    if(defined $record5 && $record5->[0] > 0) {
    my $notif = $record5->[1]." \"".$record2->[1]."\" \"".$record4->[1]."\" \"".$ret_code."\" \"".$ret_tab[1]."\" \"".$time."\" \"".$record->[9]."\" \"".$record->[0]."\"";;
    # print $notif."\n";
    `$notif`;
    }
    }
    }
    };


    lorsque j'execute le script la variable $notif ne retourne rien ...

    Je sais que l'accès à une base en utilisant le use DBI fonctionne avec le perl sans problème ... par contre en passant par le module Net rien ne se passe ...

    Par ailleurs je ne sais pas où je peux trouver les signes d'erreur

    PS : j'execute le script en commande pas par le web

  2. #2
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Je déplace vers le forum Perl...

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Par défaut
    pour que nous puissions t'aider je te conseil de:

    - isoler ton probleme et nous montrer ce qui bug avec le moins de lignes possible (en gros enlever tout le superflux qui n'est pas directement lié à ton probleme)

    - utiliser les balises code

    pourkoi utilise tu Net::Mysql et non le driver DBI normal?
    Si tu a besoin d'une solution pure perl tu a toujours la possibilité de te rabbatre du DBD::mysqlPP (basé sur Net::Mysql) et d'utiliser une syntaxe DBI normale (et DBI s'install aussi en version pure perl si il n'arrive pas à installer sa version XS)

  4. #4
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut
    effectivement je pense que je vais me tourner vers le module DBI que je connais mieux ...

    En fait je penser que c'était plus rapide avec le module Net.

  5. #5
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Net::MySQL a un seul avantage : celui d'être une solution Pure perl, utilisable depuis une machine n'ayant pas les bibliothèques de MySQL.

    --
    Jedaï

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Par défaut
    DBD::mysqlPP est la verison DBD de ce driver (du meme auteur, et basé sur cette lib), donc aucune raisons d'utiliser Net::Mysql directement

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

Discussions similaires

  1. [Python 3.X] Erreur connection avec le module mysql.connector
    Par narcibrook dans le forum Bibliothèques tierces
    Réponses: 8
    Dernier message: 23/08/2014, 20h14
  2. Undefined routine avec le module Net::Ping::External
    Par vercetty92 dans le forum Modules
    Réponses: 2
    Dernier message: 08/01/2010, 14h33
  3. Réponses: 2
    Dernier message: 18/07/2007, 19h26
  4. [VB.NET] Connection à une base vb.net avec interogation
    Par lou87 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 27/02/2006, 16h56
  5. Connection avec MS Query (Excel) via ODBC MySQL
    Par javigle dans le forum Installation
    Réponses: 7
    Dernier message: 23/11/2003, 21h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo