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 :

DBD::mysql::st execute failed:


Sujet :

SGBD Perl

  1. #1
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut DBD::mysql::st execute failed:
    Bonjour,
    Tout d'abord le contexte :
    Fedora core 4
    Apache 2
    Mysql 4.1.19
    PHP 4

    J'ai un site web, en PHP, qui lance dans un popen un script perl qui peut durer plusieurs jours. A priori, c'est seulement le script perl qui pose probleme, d'apres mes recherches sur google, mais je n'ai aucune solution pour y remedier.

    Si le script se realise dans un temps "court" (<3 jours), en general ca passe. Sur des temps plus longs le probleme se presente. Le temps pour declencher l'erreur est variable (le script a deja tourné sur 6 jours sans s'arreter).

    Le probleme :
    Dans le script je fais des appels à une base de données MySQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    use DBI; 
     
    $dbh = DBI->connect(    "DBI:mysql:database=sequencage;host=localhost", 
                            "login", 
                            "password",
                            {'RaiseError' => 1}
                    );
     
    while (bla bla)
    {
    #$nom est affecte dans cette boucle
    my $query="SELECT * FROM matable WHERE nom='$nom'";
    my $sth=$dbh->prepare($query);
    my $res=$sth->execute; # LA LIGNE ou l'erreur est annoncee
    }
    #la suite du script
    Si la boucle est trop longue, le script s'arrete.
    Dans les logs d'apache j'ai trouve l'erreur suivante :
    DBD::mysql::st execute failed: MySQL server has gone away at script.pl line xxx

    Je ne sais pas vraiment quoi faire dans ce cas la...
    Pour moi deux solutions sont possibles, mais je ne sais pas comment les mettre en oeuvre :
    - Corriger le probleme : ca n'a pas l'air si simple
    - Trapper l'erreur et dans ce cas faire un disconnect / reconnect, mais je ne sais pas comment faire le trap (il ne faut pas que ce soit un die ou exit, pour permettre au script de continuer)

    Vous aurez de votre cote peut-etre d'autres solutions a me proposer.
    Je vous remercie par avance,

    Sohnic

  2. #2
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    while (bla bla)
    {
       eval {
         #$nom est affecte dans cette boucle
         my $query="SELECT * FROM matable WHERE nom='$nom'";
         my $sth=$dbh->prepare($query);
         my $res=$sth->execute; # LA LIGNE ou l'erreur est annoncee
       };
       if( $@ =~ /server has gone away/ ){
         $dbh = DBI->connect(    "DBI:mysql:database=sequencage;host=localhost", 
                            "login", 
                            "password",
                            {'RaiseError' => 1}
                    );
         redo;
       }
    }
    Ou un truc comme ça.

    --
    Jedaï

  3. #3
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    J'essaie ca tout de suite. Je vous tiens au courant pour savoir si ca marche (j'integre un log propre a mon script, s'il y a des deco/reco, comme ca j'en serais sure).

    Merci beaucoup et desolée pour cette reponse tardive...

    Sohnic

  4. #4
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Bonjour,
    Apres quelques essais, ca a l'air de marcher. J'ai bien eu des deco/reco au cours du script. Il reste quelques coquilles, mais je ne suis pas convaincue que ca soit en rapport avec mySQL. Il faut que je regarde ca de plus pres (probleme de recuperation de quelques identifiant suite a un INSERT, mais il est fort possible que ce soit le script qui soit mal ecrit.. A suivre). Donc tres bonne astuce pour ce genre de probleme.
    Mille mercis, Jedai, ton aide m'aura ete tres precieuse !
    Sohnic

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

Discussions similaires

  1. TALEND-PERL : DBD::Oracle::st execute failed: ORA-01858
    Par robinson50 dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 28/08/2008, 21h41
  2. ECHEC INSTALLATION DBD-mysql
    Par vbcasimir dans le forum SGBD
    Réponses: 2
    Dernier message: 23/05/2006, 18h41
  3. Realiser une connexion mysql et execute une requete
    Par Taz_8626 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/05/2006, 10h52
  4. [PHP MySQL] Erreur execution requête de type INSERT
    Par Pfeffer dans le forum Requêtes
    Réponses: 6
    Dernier message: 23/01/2006, 17h38
  5. Installer le module DBI et DBD::MySQL
    Par piloupy dans le forum SGBD
    Réponses: 3
    Dernier message: 26/07/2005, 09h55

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