Echec pilote: com.mysql.jdbc.Driver [Résolu]

moooonaaaa 56 Messages postés jeudi 26 juillet 2007Date d'inscription 29 novembre 2010 Dernière intervention - 21 mai 2008 à 08:54 - Dernière réponse : moooonaaaa 56 Messages postés jeudi 26 juillet 2007Date d'inscription 29 novembre 2010 Dernière intervention
- 22 mai 2008 à 13:43
salem,

j'ai un probléme dans l'exécution d'un code java

voila ce que je fais et les messages d'erreur qui me paraissent.

je lance tout d'abord la commande suivante" >javac testsql1.java

cette commande se passe bien.

puis je fait >java testsql1

le msg d'erreur suivant me parait:"echec pilote : java.lang.ClassNotFoundException: com.mysql.jdbc.Driver"

je refait la cmd suivante:"#export CLASSPATH=${CLASSPATH}:/usr/lib/mysql-connector-java-5.0.7-bin.jar"

et je relance >java testsql1

le msg suivant me parait:"echec pilote :
com.mysql.jdbc.CommunicationsException: Communications link failure due
to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.ConnectException

MESSAGE: Connection refused

STACKTRACE:

java.net.ConnectException: Connection refused

at java.net.PlainSocketImpl.socketConnect(Native Method)

at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)

at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)

at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)

at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)

at java.net.Socket.connect(Socket.java:519)

at java.net.Socket.connect(Socket.java:469)

at java.net.Socket.(Socket.java:366)

at java.net.Socket.(Socket.java:208)

at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)

at com.mysql.jdbc.MysqlIO.(MysqlIO.java:271)

at com.mysql.jdbc.Connection.createNewIO(Connection.java:2744)

at com.mysql.jdbc.Connection.(Connection.java:1553)

at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)

at java.sql.DriverManager.getConnection(DriverManager.java:525)

at java.sql.DriverManager.getConnection(DriverManager.java:171)

at testsql1.main(testsql1.java:27)

** END NESTED EXCEPTION **

Last packet sent to the server was 1 ms ago.".

j'essai de modifer les droits d'accées de tous le contenu du répertoire /usr mais en vain

SVP aidez_moi

mon OS est opensuse10.3

mouna
Afficher la suite 

15 réponses

Répondre au sujet
moooonaaaa 56 Messages postés jeudi 26 juillet 2007Date d'inscription 29 novembre 2010 Dernière intervention - 22 mai 2008 à 13:43
+3
Utile
Salem,
j'ai enfin résoud mon probléme.
le probléme est un probléme de port(port 3306 est fermé).
pour l'ouvrir il suffit que le fichier my.cnf(se trouvant généralement sous le répertoire /etc) contient le message au dessous:

[client]
port=3306
socket=/var/lib/mysql/mysql.sock

[mysqld]
port=3306
socket=/var/lib/mysql/mysql.sock
datadir=/var/lib/mysql
set-variable = tmp_table_size=35M
set-variable = key_buffer_size=64M
set-variable = table_cache=256k
set-variable = sort_buffer=4M
set-variable = record_buffer=1M
set-variable = max_allowed_packet=24M
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de moooonaaaa
amine1234Z 134 Messages postés samedi 26 mai 2007Date d'inscription 31 mai 2010 Dernière intervention - 21 mai 2008 à 14:41
0
Utile
Salut
j'ai jamai travail en java avec Mysql mais j'ai quelque chose pour toi:

http://pagesperso-orange.fr/emmanuel.remy/index.htm

@+

% Mauvais Sens %
Commenter la réponse de amine1234Z
moooonaaaa 56 Messages postés jeudi 26 juillet 2007Date d'inscription 29 novembre 2010 Dernière intervention - 21 mai 2008 à 16:47
0
Utile
salem,
merci pour le site mais je travaille avec le console et je trouve pas comment le faire

mouna
Commenter la réponse de moooonaaaa
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 21 mai 2008 à 17:06
0
Utile
Salut:

Ajoutes le pilote JDBC au classpath avec une des options:

-cp
-classpath

Ceci est valable pour la commande java et javac.

Note: Utilises un IDE telque (Eclipse, Netbeans, ...). Pourquoi rendre la vie difficile.
Commenter la réponse de Ombitious_Developper
moooonaaaa 56 Messages postés jeudi 26 juillet 2007Date d'inscription 29 novembre 2010 Dernière intervention - 21 mai 2008 à 17:52
0
Utile
salem,
c'est un exigence de travailler avec le terminal.
je fais java -classpath mon1 mais pas de résultat
Commenter la réponse de moooonaaaa
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 21 mai 2008 à 19:24
0
Utile
Salut:

Supposons que le pilote JDBC s'appelle mysqldriver.jar.

Comme tu travailles avec un terminal il faut alors voir les deux cas possibles.

1. Sous Windows:

javac -classpath mysqldriver.jar Program.java

# Le séparateur de la variable PATH sous Windows est (;)
# Ne pas oublier d'ajouter le répertoire courant (.) à la variable classpath
java -classpath .;mysqldriver.jar Program

2. Sous Linux:

javac -classpath mysqldriver.jar Program.java

# Le séparateur de la variable PATH sous Linux est (:)
# Ne pas oublier d'ajouter le répertoire courant (.) à la variable classpath

java -classpath .:mysqldriver.jar Program
Commenter la réponse de Ombitious_Developper
moooonaaaa 56 Messages postés jeudi 26 juillet 2007Date d'inscription 29 novembre 2010 Dernière intervention - 21 mai 2008 à 20:06
0
Utile
salem,
je vous remercie beaucoup pour votre intérêt.
mais même avec cette commande il ne marche pas.
voilà le message d'erreur qui me parait:


echec pilote : com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.ConnectException
MESSAGE: Connection refused

STACKTRACE:

java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.(Socket.java:366)
at java.net.Socket.(Socket.java:208)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
at com.mysql.jdbc.MysqlIO.(MysqlIO.java:271)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2744)
at com.mysql.jdbc.Connection.(Connection.java:1553)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at testsql1.main(testsql1.java:27)


** END NESTED EXCEPTION **



Last packet sent to the server was 1 ms ago.
Commenter la réponse de moooonaaaa
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 21 mai 2008 à 21:48
0
Utile
Salut:

Ce qui est sûr est qu'on a réussit à fixer la première exception (ClassNotFoundException).

Maintenant, il apparaît qu'on a une nouvelle exception (ConnectException), lors de l'établissement de la connexion.
Donc il y a un problème quelque part lorsque ton programme essaye de se connecter via la socket à une adresse distante.

Typiquement ce problème est dû au fait que la connexion a était réfusée par la machine distante parcequ'il n'y a aucun processus qui est en train d'écouter les connexions entrantes.

Ce raisonnement nous mène à ces questions:

Est ce que le serveur de MySQL est lancé?

Si le serveur de MySQL est sur une machine distante existe il un proxy?
Commenter la réponse de Ombitious_Developper
moooonaaaa 56 Messages postés jeudi 26 juillet 2007Date d'inscription 29 novembre 2010 Dernière intervention - 21 mai 2008 à 22:25
0
Utile
salem,
le serveur mysql est lancé et travaille bien.de plus je travaille sur la même machine donc j'ai pas une machine distante.
j'ai essayé de connecter à ce base  avec gcc sous linux et je trouve aucun pb.
pour cela je pense qu'il n'est pas un pb de  firewall ou de  proxy.
SVP aidez moi.
mouna
Commenter la réponse de moooonaaaa
moooonaaaa 56 Messages postés jeudi 26 juillet 2007Date d'inscription 29 novembre 2010 Dernière intervention - 21 mai 2008 à 22:48
0
Utile
Salem,
voila mon code:

import java.sql.*;
//import java.sql.Driver;

class mon1{

       

        public static void main(String[] args){

               

                //Nom de mon pilote

                String pilote = "com.mysql.jdbc.Driver";

               

                try{
               

                        //Chargement de mon pilote
            System.out.println("aller au connexion");
                        Class.forName(pilote).newInstance();
            System.out.println("connexion terminer");
                        //Connexion à ma base mysql avec mon login et mot de passe ( à vous de changer cela)

                        Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost/essai","root","");
            System.out.println("bon connexion");
                        //Création de mon statement qui va me permettre d'executer mes requetes

                        Statement instruction = connexion.createStatement();
            System.out.println("bon statement");
                        //Ma table s'appelle coffees et tout ce qui reste dépend d'elle

                        //Vous devez changer certaines infos comme le nom de la table et celui des colonnes

                        ResultSet resultat = instruction.executeQuery("SELECT * FROM erreur");

                        while(resultat.next()){

                               

                                System.out.println("---------------------------");

                                System.out.println("1 er champ: "+resultat.getString("code"));

                                        System.out.println("2 eme champs: "+resultat.getInt("mess"));

                               

                        }

                }

                catch (Exception e){

                       

                        System.out.println("echec pilote : "+e);

                }

               

        }

}

avec des tests je trouve que le programme se plante dans cette instruction:
Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost/essai","root","");
je modifie cette ligne:
Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost","root","");
il m'affiche le meme message d'erreur
puis je modifie une autre fois:
Connection connexion = DriverManager.getConnection("jdbc:mysql:","root","");
ce message me parait:
echec pilote : java.sql.SQLException: No suitable driver
mouna
Commenter la réponse de moooonaaaa
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 22 mai 2008 à 00:01
0
Utile
Salut:

Ce qui est sûr est qu'il faut utiliser la première forme:

Connection conn = DriverManager.getConnection (url, userName, password);

Le port par défaut du serveur MySQL est le 3306. Est ce que tu n'as pas changé ce numéro de port lors de l'installation?
Si oui, il faudra alors préciser ce nouveau numéro de port:
jdbc:mysql://[host][:port]/[database]

Par exemple: jdbc:mysql://localhost:3306/testDB

Jettes un coup d'oeil sur ce tutorial:

http://www.kitebird.com/articles/jdbc.html#TOC_2
Commenter la réponse de Ombitious_Developper
moooonaaaa 56 Messages postés jeudi 26 juillet 2007Date d'inscription 29 novembre 2010 Dernière intervention - 22 mai 2008 à 00:58
0
Utile
salem,
je vous remecie beaucoup une autre fois à votre aide.
je fais mysql -help et je trouve une table qui contient les valeurs suivants:

Variables (--variable-name=value)
and boolean options {FALSE|TRUE}  Value (after reading options)
--------------------------------- -----------------------------
auto-rehash                       TRUE
character-sets-dir                (No default value)
default-character-set             latin1
compress                          FALSE
database                          (No default value)
delimiter                         ;
vertical                          FALSE
force                             FALSE
named-commands                    FALSE
local-infile                      FALSE
no-beep                           FALSE
host                              (No default value)
html                              FALSE
xml                               FALSE
line-numbers                      TRUE
unbuffered                        FALSE
column-names                      TRUE
sigint-ignore                     FALSE
port                              0

prompt                            mysql>
quick                             FALSE
raw                               FALSE
reconnect                         TRUE
socket                            (No default value)
ssl                               FALSE
ssl-ca                            (No default value)
ssl-capath                        (No default value)
ssl-cert                          (No default value)
ssl-cipher                        (No default value)
ssl-key                           (No default value)
ssl-verify-server-cert            FALSE
table                             FALSE
debug-info                        FALSE
user                              (No default value)
safe-updates                      FALSE
i-am-a-dummy                      FALSE
connect_timeout                   0
max_allowed_packet                16777216
net_buffer_length                 16384
select_limit                      1000
max_join_size                     1000000
secure-auth                       FALSE
show-warnings                     FALSE

bon enfin j'essai de mettre le numéro de port 0 et il ne marche pas puis j'essai de le mettre 3306 mais aussi il ne marche pas.
SVP j'ai besoin de votre aide.

mouna
Commenter la réponse de moooonaaaa
moooonaaaa 56 Messages postés jeudi 26 juillet 2007Date d'inscription 29 novembre 2010 Dernière intervention - 22 mai 2008 à 01:14
0
Utile
salem,
est ce qu'il peut etre un probléme de compatibilité des versions
j'ai utilisé la version java suivante:

Citation:
java version "1.5.0_12"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_12-b04)
Java HotSpot(TM) Server VM (build 1.5.0_12-b04, mixed mode)
et la version mysql suivant:

Citation:
mysql Ver 14.12 Distrib 5.0.45, for suse-linux-gnu (i686) using readline 5.2
et la version mysql-connector est:

Citation:
mysql-connector-java-5.0.7-bin.jar
ces versions sont ils compatibles
Commenter la réponse de moooonaaaa
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 22 mai 2008 à 08:15
0
Utile
Salut:

Franchement, je ne travaille guèrre sous Linux.

Je pense qu'il faut voir une guide d'installation de MySQL pour avoir une bonne configuration.

De plus je te conseille d'utiliser la version du pilote JDBC qui convient le plus avec la version installée du serveur MySQL.

Je ne pense pas que ce problème est lié à la version installée du JDK.
Commenter la réponse de Ombitious_Developper
moooonaaaa 56 Messages postés jeudi 26 juillet 2007Date d'inscription 29 novembre 2010 Dernière intervention - 22 mai 2008 à 11:09
0
Utile
salem,
je lance la commande suivante:
Citation:
nmap 127.0.0.1 -p 3306
et je trouve comme résultat
Citation:
Starting Nmap 4.20 ( http://insecure.org ) at 2008-05-22 10:51 CEST
Interesting ports on localhost (127.0.0.1):
PORT STATE SERVICE
3306/tcp closed mysql

Nmap finished: 1 IP address (1 host up) scanned in 0.043 seconds
pour cela je veux ouvrir le port mais je sais pas comment.
j'ai lancé mysql .
mais le port reste fermé
SVP aidez-moi c'est urgent
Commenter la réponse de moooonaaaa

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.