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 :

DBI erreur avec sql serveur 2005


Sujet :

SGBD Perl

  1. #1
    Membre actif Avatar de scaleo
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 327
    Points : 219
    Points
    219
    Par défaut DBI erreur avec sql serveur 2005
    Bonjour j'ai un problème avec dbi et sql server 2005 quand j'essaie d'inséré des données dbi me répond ::


    DBD::ODBC::st execute failed: [Microsoft][ODBC SQL Server Driver]Valeur de caractère non valide pour la spécification de la casse (SQL-22018)(DBD: st_execute/SQLExecute err=-1)

    pourtant quand j'insère des données a partir de sql server management sutdio, la requete est effectué avec succès!!!

    Le problème semble bien venir de DBI !! !!!

    mon script de teste :




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/usr/bin/perl -w
    use DBI;
     
    open(STDERR, ">Error.txt" ) or die "cannot redirect stderr output in log file : $!\n";
    my $DSN = 'driver={SQL Server};Server=sql\mssql; database=web; uid=sa;pwd=****************/;';
    my $db = DBI->connect("dbi:ODBC:$DSN", { odbc_cursortype => DBI::SQL_CURSOR_DYNAMIC, AutoCommit => 1 } ) or die ( db($DBI::errstr) );
     
    my $i = $db->prepare("insert into web(link,idcategory,id,idcountry,date,revisit,body,title,description,feed,size,bluemap,last) values(?,?,?,?,?,?,?,?,?,?,?,?,?)");
       $i->execute('http://www.free.fr','1','137','1','26/09/1985','7','maison sa savs ?','tittre','la desc','not_found','7.0','0','12/05/2006');
    Quelqu'un a t'il une solution ?

    merci
    Vista powaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ::

  2. #2
    Invité
    Invité(e)
    Par défaut
    Dans ta méthode execute, met les valeurs numériques sans quote.
    Sinon, jette un oeil du côté de la méthode quote de DBI. Je pense que ton problème vient de là.

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    ben non: il utilise les placeholders avec prepare(), c'est ce qu'il ya de mieux pour el quote!
    A vu de nez je ne vois pas d'erreur mais il y a tellement d'endroits ou ca peut merder...
    Ca peut par exemple etre le '?' dans une des valeurs de ton execute. La version pure perl du driver Mysql avait ce probleme par exemple.
    Esque ca marche pour des requetes plus simples deja?
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par pospos
    ben non: il utilise les placeholders avec prepare(), c'est ce qu'il ya de mieux pour el quote!
    heu.. pardon, mais j'ai déjà eu ce problème avec SQL Server et DBI : les valeurs numériques doivent être sans apostrophe...

    Citation Envoyé par pospos
    La version pure perl du driver Mysql avait ce probleme par exemple.
    heu ... re-pardon, mais on parle de SQL Server, pas Mysql....
    Dernière modification par Woufeil ; 05/10/2006 à 15h07. Motif: Suppression d'un smiley

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    j'accepte tes excuses...

    je parlais du driver pur perl de mysql pour dire que certains drivers pouvaient avoir ce genre de bug

    Ensuite je n'ai pas parlé de tes '', je dis simplement qu'utiliser la methode quote de DBI ne sert à rien (et va meme faire foirer le truc) quand on utilise les prepared statements comme il le fait ici.
    Il utilise la meilleure methode
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  6. #6
    Membre actif Avatar de scaleo
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 327
    Points : 219
    Points
    219
    Par défaut
    Je ne voie vraiment pas d'ou pourrais venir cette erreur surtout que ce matin je me suis livrer a quelques essaie d'Sql server 2005 avec DBI et tout marchais pour le mieux et cela sur le meme serveur sql que celui cité dans mon poste !!! .

    Petite préçision les données que j'essaie d'insérer ce trouve dans un hash du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $donne = {
       date => "00/00/000",
      etc....
    };
    Vista powaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ::

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par pospos
    je parlais du driver pur perl de mysql pour dire que certains drivers pouvaient avoir ce genre de bug
    Tu devrais savoir que DBD::ODBC n'est pas pur perl, non ? Rien à voir avec le problème.
    Et je n'ai jamais parlé de guillemets, mais d'apostrophe (simple quote).
    Bref... soyons constructifs pour aider scaleo au lieu de se rabaisser à tes histoires de fond...men..s.

    Scaleo, quel est le format exact de tes champs date ? Smalldate ?

  8. #8
    Membre actif Avatar de scaleo
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 327
    Points : 219
    Points
    219
    Par défaut
    Scaleo, quel est le format exact de tes champs date ? Smalldate ?
    J'ai mis des datetime
    Vista powaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ::

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    Citation Envoyé par kuzco
    Tu devrais savoir que DBD::ODBC n'est pas pur perl, non ? Rien à voir avec le problème.
    ??!!
    je le repete, je parlais de ca pour soulgigner que *certains drivers* pouvaient avoir ce genre de bug.
    Qu'il soit pur perl ou pas, qu'il soit pour mysql, oracle ou n'importe quelle autre base.
    La raison est simple: dans le modele DBD/DBI c'est au driver DBD d'implementer la methode d'incertion des valeurs dans les placeholders.

    Et je n'ai jamais parlé de guillemets, mais d'apostrophe (simple quote).
    Oula oui pardon, ca change tout...

    d'ailleurs je t'assure qu'en perl, une methode s'attendant à recevoir un entier sera tout à fait satisfaite par un string genre '43' (ou "43" d'ailleurs...).
    Perl opere les conversions sans aucun probleme, que la fonction a attaquer soit en pur perl ou en C (cf le fichier typemap, et la fonction looks_like_number).
    Donc si dans le passé tu a eu des problemes avec des quotes c'est que ce probleme venait d'ailleurs.
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    Citation Envoyé par scaleo
    J'ai mis des datetime
    esque ca marche pour des requetes (et des tables) plus simples?
    Ne peux tu pas isoler le probleme en essayer divers requetes sur differents shemas de table jusqu'a rencontrer le probleme?
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  11. #11
    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
    Je prierais pospos et kuzco de se concentrer sur le sujet du topic et d'arrêter les remarques mesquines.

    Par ailleurs scaleo pourrait nous fournir la description de sa table, qu'on sache exactement de quoi on est en train de parler.

    --
    Jedaï

  12. #12
    Membre actif Avatar de scaleo
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 327
    Points : 219
    Points
    219
    Par défaut
    Merci Jedai,

    Voila la fameuse table qui me rend chèvre


    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
    create table web (
       idweb                int                  identity(1,1) not null ,
       link                 varchar(250)         not null unique,
       idcategory           int                  not null,
       id                   int                  not null,
       idcountry            int                  not null,
       date                 datetime          not null,
       revisit              int                  not null,
       body                 ntext                not null,
       title                ntext                not null,
       description          ntext                not null,
       feed                 varchar(260)        not null,
       size                 float                not null,
       bluemap              bit                  not null,
       last                 datetime          not null,
       constraint pk_web primary key nonclustered (idweb)
    )
    go
    Vista powaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ::

  13. #13
    Membre actif Avatar de scaleo
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 327
    Points : 219
    Points
    219
    Par défaut
    Personne n'a une idée parce que je m'arrache les cheveux
    Vista powaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ::

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    esque tu a essayé d'isolé le probleme comme je te le suggerais?
    Avec des requetes simple sur des tables plus simples ca passe?
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  15. #15
    Membre actif Avatar de scaleo
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 327
    Points : 219
    Points
    219
    Par défaut
    J'ai essayé sa oui et tout fonctionne pour le mieux. Par contre j'ai constaté un bug dans DBI au niveau des ???? pendant un moment il n'arretait pas de me dire qu'il en manquais un alors que pas du tout plus j'en mettais plus il en voulais
    Vista powaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ::

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    et donc à partir de qul moment ca ne marche plus?
    Essai pleins de requetes sur divezrs shemas de table et isole le probleme!
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  17. #17
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    juste comme ça ... le "?" dans les données ne devrait-il pas être échappé pour pouvoir être inséré ???
    ne serait-ce pas lui qui poserait problème ?

Discussions similaires

  1. Backup sur lecteur réseau avec sql serveur 2005 ou 2008
    Par Labienus dans le forum Administration
    Réponses: 3
    Dernier message: 25/03/2011, 11h32
  2. Lenteur avec SQL Serveur 2005
    Par Arnaud_B dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/04/2008, 15h41
  3. Erreur avec SQL Serveur, je ne comprend pas !
    Par kmaniche dans le forum Accès aux données
    Réponses: 6
    Dernier message: 24/01/2007, 13h38
  4. Importer un fichier XML avec SQL serveur 2005
    Par thomasesteve dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/03/2006, 12h26
  5. Problème avec l'import DTS SQL Serveur 2005
    Par dlan dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/03/2006, 12h47

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