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 :

[sgbd]Insertion de données dans une base mysql


Sujet :

SGBD Perl

  1. #1
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Par défaut [sgbd]Insertion de données dans une base mysql
    Bonjour,

    j'ai à peine deux jour de perl dans les pattes et j'ai quelques soucis avec un script CGI.

    Je n'arrive pas à introduire mes données dans les tables de ma base mysql 4.1 qui contiennent des types géometriques. Alors qu'avec la même méthode je rentre sans pb mes données dans les tables sans type géométriques.

    Faut'il chargé un package en plus de CDI_Lite et DBI?

    merci d'avance

    PS: j'ai tapé la requete SQL générer par le script en mode console sur mysql et sa passe... ca doit venir de la communication entre mysql et dbi

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    fais voir un bout de code! et c'est quoi comme données de type geometrique?

  3. #3
    Membre expérimenté
    Inscrit en
    Février 2005
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 167
    Par défaut Re: Insertion de données dans une base mysql
    Citation Envoyé par duge
    Faut'il chargé un package en plus de CDI_Lite et DBI?
    Tu as installé DBD::Mysql ?

  4. #4
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Par défaut
    Merci,

    les types géométriques sont utilisés dans les bases de données spatiales, ici j'ai mis le type GEOMETRY.
    Selon l'open GIS, il y a deux formats géométriques supportés:
    le WKT:well known text: genre POINT(1 1)
    le WKB:well known binaire: genre pour le même point 0101000000000000000000F03F000000000000F03F

    le début du script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!c:/perl/bin/Perl.exe
    use DBI;
    use CGI_Lite;
    $cgi=new CGI_Lite;
    %in= $cgi->parse_form_data;
     
    $dbh=DBI->connect("dbi:mysql:database=assainissement;host=localhost","root","******");
    #recuperation des champs
    $idStructure="$in{'idStructure'}";
    $id="$in{'id'}";
    	$idStructure=$idStructure.'_'.$id;
    $STEP_idSTEP="$in{'STEP_idSTEP'}";
    $nom="$in{'nom'}";
    ...........................................

    le champs mis en cause

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $position= null; #champ non saisi dans la page, données de type GEOMETRY
    .............................................................

    le bout qui foire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #connection à la base
    $ini=$dbh->prepare("INSERT INTO struc_station VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)");
    $ini->execute($idStructure,$STEP_idSTEP,$nom,$concepteur,$constructeur,$date_cons,$date_recep,$materiaux,$position,$NGF,$volume,$suivante,$description) || die "Pb d'insertion: $DBI::errst";

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    quel est le message d'erreur quet'obtient?
    sinon t'as oublié le point virgule apres execute

  6. #6
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Par défaut
    le point virgule y est, il se trouve après le die (la fenetre est trop petite)


    le message d'erreur du fichier de log

    [Tue May 31 16:21:37 2005] [error] [client 127.0.0.1] Premature end of script headers: struc_station3.cgi, referer: http://localhost/cgi-bin/SIG/struc_station2.cgi
    [Tue May 31 16:21:37 2005] [error] [client 127.0.0.1] DBD::mysql::st execute failed: Unknown error at C:/Program Files/Apache Group/Apache2/cgi-bin/SIG/struc_station3.cgi line 49.\r, referer: http://localhost/cgi-bin/SIG/struc_station2.cgi


    la ligne 49 est la ligne qui foireuse que j'ai dans le message précédent, tu as déjà eu le problème?

  7. #7
    Membre expérimenté
    Inscrit en
    Février 2005
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 167
    Par défaut
    Citation Envoyé par djibril
    quel est le message d'erreur quet'obtient?
    sinon t'as oublié le point virgule apres execute
    Non; ça part dans l'erreur checking sur la ligne suivante. (Ce qui, au passage, devrait être $DBI::errstr). Il manque un 'r'.

    N

  8. #8
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    non j'ai jamais eu ce message d'erreur, mais j'ai jamais utilisé le type geometry

  9. #9
    Membre expérimenté
    Inscrit en
    Février 2005
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 167
    Par défaut
    Tu dis que ça marche quand il s'agit de données simples.

    Tu dis que ça ne marche pas quand il s'agit de données de type géométrique, de plus, dans un environnement CGI.

    Alors, pour simplifier un peu le problème, écris un petit script qui se connecte à la base et fait un insert d'un enregistrement. Est-ce que ça marche ?

    Au moins comme ça tu va pouvoir plus facilement voir où et comment ça part en vrille. Un fois que tu comprends ce qui ne va pas, tu pourras retourner à l'environnement CGI.

    N

  10. #10
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Par défaut
    Le problème vient bien du type géométrique, avec mysql Front j'ai tenté de lire la table, le logiciel refuse, alors j'ai changé le type GEOMETRY en type DECIMAL, avec le même script sans le type geometry tout marche impécable!
    Le problème, c'est que je ne peux pas me passer de ce type vu qu'il s'agit d'une base pour un système d'information géographique.

  11. #11
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Par défaut
    J'ai trouvé la solution!!!

    en fait, les types geométriques se comportent comme des blob

    donc il fallait faire:

    la donnée recup:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $position= 'POINT(5 6)';
    ..................

    la ligne modifié:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ini=$dbh->prepare("INSERT INTO struc_station VALUES(?,?,?,?,?,?,?,?,[b]GeomFromText(?)[/b],?,?,?,?)");
    $ini->execute($idStructure,$STEP_idSTEP,$nom,$concepteur,$constructeur,$date_cons,$date_recep,$materiaux,$position,$NGF,$volume,$suivante,$description) || die "Pb d'insertion: $DBI::errstr";
    et là ca marche!!!

    merci pour votre aide

  12. #12
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    bravo , content pour toi, une chose de plus apprise
    oublie pas le tag resolu, bas de page à gauche!

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

Discussions similaires

  1. Insertion données fichier texte dans une base MySQL
    Par majduuuuus dans le forum Général Java
    Réponses: 5
    Dernier message: 19/03/2013, 23h45
  2. Insertion des images et vidéos dans une base de données
    Par taouja dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 07/04/2007, 13h31
  3. [MySQL] Débutant - Insertion d'un fichier excel dans une base mysql
    Par kurkaine dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/12/2006, 17h44
  4. Réponses: 1
    Dernier message: 09/05/2006, 12h00

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