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

Langage Perl Discussion :

Doute sur l’erreur MySQL syntax


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 24
    Points : 22
    Points
    22
    Par défaut Doute sur l’erreur MySQL syntax
    Bonjour,
    J’utilise un script perl qui n’a pas bougé depuis des années.
    Visiblement il marchait bien avant même si ça dernière exécution date de + 2 ans.
    Comme erreur j’ai ceci :
    ./cron_carto.pl
    loadsnc PFRA
    date : 2015-12-03 15:12:08
    chargement snc

    DBD::mysql::db do failed: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''','')' at line 2 at loadsnc.pl line 132, <FICSNC> line 1.


    À toute fin je mets ma ligne 132
    unless ($rc=$dbh->do("insert into tbctsnc values ('$cenv','$ljob','$sched','$lfichier','$libellig','$cplanif','$lsystem','$cexpl','$ccrit','$cserv','$cqual')"))
    Mais comme ça fonctionnait avant, d’où peut venir le problème ?
    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Hum, y a-t-il eu une modification de la version de Perl, de la version du driver MySQL de Perl ou de la version de Perl dans l'intervalle?

    Sinon, peux-tu donner les quelques lignes de code avant et après ta ligne 132?

  3. #3
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Bonjour,
    Édite toutes les valeurs avant l'insert, voir si l'une d'elle ne contient pas un caractère indésirable...
    Un insert contenant un libellé avec une apostrophe pourrait lui faire perdre les pédales...

    Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unless ($rc=$dbh->do('insert into tbctsnc values ("$cenv","$ljob","$sched","$lfichier","$libellig","$cplanif","$lsystem","$cexpl","$ccrit","$cserv","$cqual")'))

  4. #4
    Membre confirmé
    Avatar de cmcmc
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 316
    Points : 641
    Points
    641
    Par défaut
    Citation Envoyé par dmganges Voir le message
    Un insert contenant un libellé avec une apostrophe pourrait lui faire perdre les pédales...
    Exactement.

    Tu peux peut-être visualiser l'expression envoyée à $dbh->do en positionnant la variable d'environnement DBI_TRACE, par exemple
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Taisha:~/perl/forum $ DBI_TRACE=1 perl -E'
    use DBI;
    my $dbh = DBI->connect("dbi:SQLite:dbname=foobar.db","","");
    my ($statement) = @ARGV;
    $dbh->do($statement)' "invalid sql"
        DBI 1.615-ithread default trace level set to 0x0/1 (pid 10864 pi 10448360) at DBI.pm line 278 via -e line 2
        Note: perl is running without the recommended perl -w option
        -> DBI->connect(dbi:SQLite:dbname=foobar.db, , ****)
        -> DBI->install_driver(SQLite) for cygwin perl=5.010001 pid=10864 ruid=1000 euid=1000
           install_driver: DBD::SQLite version 1.31 loaded from /usr/lib/perl5/site_perl/5.10/i686-cygwin/DBD/SQLite.pm
        <- install_driver= DBI::dr=HASH(0x1066bad0)
        !! warn: 0 CLEARED by call to connect method
        <- connect('dbname=foobar.db', '', ...)= DBI::db=HASH(0x104c6338) at DBI.pm line 665
        <- STORE('PrintError', 1)= 1 at DBI.pm line 717
        <- STORE('AutoCommit', 1)= 1 at DBI.pm line 717
        <- STORE('PrintWarn', 0)= 1 at DBI.pm line 720
        <- FETCH('PrintWarn')= '' at DBI.pm line 720
        <- STORE('Warn', 0)= 1 at DBI.pm line 720
        <- FETCH('Warn')= '' at DBI.pm line 720
        <- STORE('Username', '')= 1 at DBI.pm line 720
        <> FETCH('Username')= '' ('Username' from cache) at DBI.pm line 720
        <- connected('dbi:SQLite:dbname=foobar.db', '', ...)= undef at DBI.pm line 726
        <- connect= DBI::db=HASH(0x104c6338)
        <- STORE('dbi_connect_closure', CODE(0x1066baa0))= 1 at DBI.pm line 735
        !! ERROR: 1 'near "invalid": syntax error' (err#0)
        <- do('invalid sql')= undef at -e line 5
    DBD::SQLite::db do failed: near "invalid": syntax error at -e line 5.
           ERROR: 1 'near "invalid": syntax error' (err#0)
        <- DESTROY(DBI::db=HASH(104c6290))= undef
        !! ERROR: 1 CLEARED by call to disconnect_all method
        <- disconnect_all= '' at DBI.pm line 743
    !   <- DESTROY(DBI::dr=HASH(1066bad0))= undef during global destruction
    Taisha:~/perl/forum $
    Sauf indication contraire tous les codes que je présente sont utilisables et testés (mais sans garantie d'aucune sorte)
    J'apporte beaucoup de soin à la rédaction de mes posts et apprécie les retours donc merci de s'il vous paraissent pertinents ou utiles
    Lazyness, Impatience and Hubris are good for you

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    Hum, y a-t-il eu une modification de la version de Perl, de la version du driver MySQL de Perl ou de la version de Perl dans l'intervalle?

    Sinon, peux-tu donner les quelques lignes de code avant et après ta ligne 132?
    comme j'ai le problème avec plusieurs vieux scripts sur la même commande insert, je pense effectivement à un changement de version.
    La version de Perl n'a pas changé et date de 2006
    /app/gnu/perl-5.8.8/bin/perl -v
    This is perl, v5.8.8 built for sun4-solaris

    Pour MySqL j'ai trouvé 2 installs, une 4 de 2005 et une 5 de 2007.
    ./app/web/mysql-4.0.17/bin/mysql -V
    ./app/web/mysql-4.0.17/bin/mysql Ver 12.22 Distrib 4.0.17, for sun-solaris2.6 (sparc)
    et
    ./app/web/mysql-5.0.24/bin/mysql -V
    ./app/web/mysql-5.0.24/bin/mysql Ver 14.12 Distrib 5.0.24, for sun-solaris2.8 (sparc) using EditLine wrapper

    le module DBI "VERSION: 1.51"

    comment savoir quelle version dbi:mysql utilise ?

Discussions similaires

  1. requetes sql sur Mysql 'syntaxe du where'
    Par alienor50 dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/06/2011, 00h12
  2. Erreurs de syntaxes CREATE TABLE sur Access + MySQL
    Par bmarcesche dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 17/06/2009, 08h56
  3. [AC-2003] Doute sur ma syntaxe VBA
    Par Lutine dans le forum VBA Access
    Réponses: 6
    Dernier message: 14/05/2009, 21h18
  4. Erreur 145 sur table mysql
    Par ramses83 dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/09/2007, 21h09
  5. Discussions sur la (les) syntaxe(s)
    Par Laurent Dardenne dans le forum Sepi
    Réponses: 11
    Dernier message: 02/01/2005, 20h25

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