DBI et wamp
Résolu
Kirbby
-
Kirbby -
Kirbby -
Bonjour,
Alors voila, j'essaye tout simplement d'accéder à un table de wamp en utilisant perl le tout sous windows.
Le seul problème c'est qu'évident ça marche pas ^^
lorque que perl essaye de connecter (dbi-> connect( ...)) j'ai droit à cette magnifique erreur
Can't connect to data source 'adresse du serveur' because I can't work out
what driver to use (it doesn't seem to contain a 'dbi:driver:' prefix and the DB
I_DRIVER env var is not set) at la ligne du dbi-> connect
Au point de vue conf j'ai installé active perl avec 2 ou 3 modules en plus.
J'ai également effectué des recherches sur cette erreur et on parle d'un .cgi où il faudrait
modifier un "type" de base de données au qqchose du genre.
Seulement je ne trouve aucun fichier *.cgi qui puisse convenir ...
Si qq'un a une petite idée sur la question !?
Alors voila, j'essaye tout simplement d'accéder à un table de wamp en utilisant perl le tout sous windows.
Le seul problème c'est qu'évident ça marche pas ^^
lorque que perl essaye de connecter (dbi-> connect( ...)) j'ai droit à cette magnifique erreur
Can't connect to data source 'adresse du serveur' because I can't work out
what driver to use (it doesn't seem to contain a 'dbi:driver:' prefix and the DB
I_DRIVER env var is not set) at la ligne du dbi-> connect
Au point de vue conf j'ai installé active perl avec 2 ou 3 modules en plus.
J'ai également effectué des recherches sur cette erreur et on parle d'un .cgi où il faudrait
modifier un "type" de base de données au qqchose du genre.
Seulement je ne trouve aucun fichier *.cgi qui puisse convenir ...
Si qq'un a une petite idée sur la question !?
A voir également:
- DBI et wamp
- Wamp - Télécharger - Divers Web & Internet
- Wamp ubuntu ✓ - Forum Ubuntu
- Probléme wamp orange - Forum Bases de données
- Problème Wamp/Filezilla ✓ - Forum Webmastering
- WAMP ERROR SVP - Forum Logiciels
1 réponse
Salut Kirbby,
Pour trouver ton erreur alors que je n'ai pas ton code source sous les yeux (faut aimer jouer à cache cache sur commentcamarche.net...on croirait que les codes sources valent plus cher que l'or vu la mal qu'on a à les obtenir...), j'ai LU LE MESSAGE D'ERREUR que tu nous a mis :
donc il veut que tu lui précise quel driver utiliser pour se connecter. Avec WAMP, je suppose que tu veux utiliser MySQL, donc en regardant la doc sur DBD::mysql (le driver mysql pour DBI), c'est bien DBD::mysql et pas DBI::mysql, j'ai trouvé ça, tout au début :
Donc ta chaîne de caractères de connexion doit avoir cette forme là : $dsn = "DBI:mysql:database=$database;host=$hostname;port=$port";
Raph
Pour trouver ton erreur alors que je n'ai pas ton code source sous les yeux (faut aimer jouer à cache cache sur commentcamarche.net...on croirait que les codes sources valent plus cher que l'or vu la mal qu'on a à les obtenir...), j'ai LU LE MESSAGE D'ERREUR que tu nous a mis :
Can't connect to data source 'adresse du serveur' because I can't work out what driver to use (it doesn't seem to contain a 'dbi:driver:' prefix and the DB I_DRIVER env var is not set) at la ligne du dbi-> connect
donc il veut que tu lui précise quel driver utiliser pour se connecter. Avec WAMP, je suppose que tu veux utiliser MySQL, donc en regardant la doc sur DBD::mysql (le driver mysql pour DBI), c'est bien DBD::mysql et pas DBI::mysql, j'ai trouvé ça, tout au début :
$dsn = "DBI:mysql:database=$database;host=$hostname;port=$port";
$dbh = DBI->connect($dsn, $user, $password);
Donc ta chaîne de caractères de connexion doit avoir cette forme là : $dsn = "DBI:mysql:database=$database;host=$hostname;port=$port";
Raph
use DBI;
$database = "....";
$hostname = "localhost";
$login = "root";
$mdp = "";
$dsn = "DBD::mysql:$database:$hostname";
$dbh = DBD->connect($dsn,$login,$mdp) or die "ECHEC connexion";
$requete = "SELECT * FROM matable";
$sth = $dbh->prepare($requete);
$sth->execute();
while(my @row = $sth->fetchrow_array)
{
....
}
$sth -> finish;
$dbh->diconnect
Cependant je ne comprend pas ce que tu racontes, tu me dis de remplacer DBI par DBD mais
tu me dis de mettre
$dsn = "DBI:mysql:database=$database;host=$hostname;port=$port";
Je ne comprends pas bien la chose ???
Non, je ne t'ai jamais dit de faire ça...
Bon, transforme ton code ainsi :
use DBI; $database = "...."; $hostname = "localhost"; $login = "root"; $mdp = ""; $dsn = "DBI:mysql:database=$database;host=$hostname"; $dbh = DBI->connect($dsn,$login,$mdp) or die "ECHEC connexion"; $requete = "SELECT * FROM matable"; $sth = $dbh->prepare($requete); $sth->execute(); while(my @row = $sth->fetchrow_array) { .... } $sth -> finish; $dbh->diconnect ;