Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1838 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  connexion à une base oracle avec DBI

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

connexion à une base oracle avec DBI

n°1534999
donny3
Posté le 28-03-2007 à 13:35:44  profilanswer
 

Salut,
 
J'ai un script, qui est censer me permettre de me connecter à une base oracle mais cela ne fonctionne pas;j'ai cette erreur
 

Citation :

DBI connect('IRON1','user',...) failed: ORA-12154: TNS:could not resolve t
he connect identifier specified (DBD ERROR: OCIServerAttach) at C:\Documents and
 Settings\billy\scripts\connect.pl line 14
Database connection not made: ORA-12154: TNS:could not resolve the connect ident
ifier specified (DBD ERROR: OCIServerAttach) at C:\Documents and
 Settings\billy\scripts\connect.pl line 14.


 
 
à la ligne 14 j'ai cela

Citation :

my $dbh = DBI->connect("dbi:Oracle:$dbname", $user, $passwd) or  
die "Database connection not made: $DBI::errstr";


 
Je ne vois pas pourquoi,pourtant j'ai bien installer un client oracle sur ma machine windows afin de pouvoir me connecter à ma base sur un serveur unix;
j'ai creer une connexion ODBC, je l'ai tester et elle fonctionne,
et des que je l'utilise dans le script , sa plante et j'ai le message d 'erreur;
 
SI quelqu'un pouvait m'eclairer;
 
 
Merci.

mood
Publicité
Posté le 28-03-2007 à 13:35:44  profilanswer
 

n°1535017
anapajari
s/travail/glanding on hfr/gs;
Posté le 28-03-2007 à 13:54:27  profilanswer
 

si tu utilises ODBC c'est à l'ODBC qu'il faut te connecter avec les drivers ... suspense ... ODBC...


Message édité par anapajari le 28-03-2007 à 13:54:37
n°1535023
donny3
Posté le 28-03-2007 à 14:01:54  profilanswer
 

mon script de connexion est comme cela

Code :
  1. #!/usr/bin/perl -w
  2. use DBI;
  3. use DBD::Oracle;
  4. use strict;
  5. my $dbname = 'client';
  6. my $user = 'user';
  7. my $passwd = 'pass';
  8. my $dbh = DBI->connect("dbi:Oracle:$dbname", $user, $passwd) or
  9. die "Database connection not made: $DBI::errstr";
  10. $dbh -> disconnect;


 
et je veux me connecter à cette base oracle

Citation :


client=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = test.toto)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = client.toto.fr)
    )
  )


 
normalement cela devrait fonctionner car je l'ai deja fait sous unix

n°1535031
couak
Posté le 28-03-2007 à 14:07:03  profilanswer
 

depuis la machine où tu lances ton script perl :

Code :
  1. tnsping client


 
si ca répond pas, c'est que tu as un pb de config du client oracle
si ca répond, c'est chelou car il ne trouve pas la config., dans ce cas là tu peux forcer la variable d'environnement TNS_ADMIN dans ton script :

Code :
  1. $ENV{TNS_ADMIN} = '<chemin du repertoire contenant tnsnames.ora>';


Message édité par couak le 28-03-2007 à 14:07:15
n°1535234
donny3
Posté le 28-03-2007 à 15:29:15  profilanswer
 

ouai c'est bon , il voit la base
je l 'avais pas mise dans le fichier tnsnames c'etait pour ça

n°1535345
donny3
Posté le 28-03-2007 à 16:40:56  profilanswer
 

DBI c'est bien mais ça a certaine limite
je fais une requete et je lui demande de m'afficher ce qu'elle retoure

Code :
  1. while (my $t = $sth->fetchrow_array()) {
  2. print " $x = $t \n";
  3. }


 
si la colonne est vide, ça plante et j'ai un "use of unintialized value....
je suis obliger de rajouter ça
if( not defined($t)){ $t='vide'; }

n°1535435
couak
Posté le 28-03-2007 à 19:34:25  profilanswer
 

c'est ce qui arrive quand on met "use strict;" :o

n°1535561
anapajari
s/travail/glanding on hfr/gs;
Posté le 29-03-2007 à 08:32:11  profilanswer
 

nan mais surtout fetchrow_array retourne ... un array [:dawak]
Donc tu es censé mettre le retour dans un tableau ( @t ), il serait effectivement urgent que tu mettes un use strict dans tes scripts [:dawak]

n°1535603
donny3
Posté le 29-03-2007 à 10:06:28  profilanswer
 

je sais qu'il retourne un tableau
mais vu que je retourne qu'une valeur dans ma requete, c'est un peu bête d'utiliser un tableai

n°1535618
anapajari
s/travail/glanding on hfr/gs;
Posté le 29-03-2007 à 10:16:49  profilanswer
 

alors à ce moment là tu dois écrire les choses "proprement":

Code :
  1. my ($t) = $sth->fetchrow_array();
 

honnêtement suis le conseil de coak, rajoute "use strict;" au début de ton script...


Message édité par anapajari le 29-03-2007 à 13:27:12
mood
Publicité
Posté le 29-03-2007 à 10:16:49  profilanswer
 

n°1535666
donny3
Posté le 29-03-2007 à 11:02:36  profilanswer
 

ok
je rajoute les paranthese,je les avais au depart,quand ma requete renvoyai 3 champs;
pour le use strict;
je l'ai mis, je le met toujours;


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  connexion à une base oracle avec DBI

 

Sujets relatifs
[RESOLU] Pilote ISAM est introuvable + Connexion Jet sur ExcelDriver JDBC pour se connecter sur une base Lotus Notes (domino)
"Base de données relationnelle" en xml ?Fonction pour écrire un DWORD dans la base de registre avec VB6
Se servir de sa base de donnee chez free[Résolu] XML socket: Aucune connexion:(
Aide : Connexion J2EE / MysqlBase de données préalable création logiciel et site internet
importation base sql via script php 
Plus de sujets relatifs à : connexion à une base oracle avec DBI


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR