Java.sql.SQLException: не найдено подходящего драйвера для теста localhost

При попытке подключиться к mysql я всегда получаю эту ошибку:

java.sql.SQLException: не найдено подходящего драйвера для теста localhost

Я уже включил mysql-connector.jar в /WEB-INF/lib в моем приложении. Что еще мне нужно настроить, чтобы заставить его работать? Нужно ли добавить что-то в web.xml? Я не использую appengine.

Вот мой код на сервере:

package com.mysql.server;

import java.sql.Connection; 
import java.sql.DriverManager;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.mysql.client.ConnDb;

public class ConnDbImpl extends RemoteServiceServlet implements ConnDb {
   public Connection con;
   @Override
    public String tryConn() {
     try{
       String host = "localhost";
       String db = "test";
       String driver = "com.mysql.jdbc.Driver";
       String user = "root";
       String pass = "pwd";

       Class.forName(driver).newInstance();
       con = DriverManager.getConnection(host+db, user, pass);
       return "Connected to Database";
     } catch(Exception ex) {
         return ex.toString();
     }    
   } 
}

Ответ 1

Вы получите это исключение, если JDBC-URL не будет принят ни одним из загруженных драйверов JDBC в соответствии с методом Driver#acceptsURL(). Вы действительно забыли JDBC-драйвер, специфичный для URI-префикса. Для драйвера JDBC MySQL это jdbc:mysql://. Полный URL-адрес соединения должен выглядеть следующим образом:

con = DriverManager.getConnection("jdbc:mysql://localhost/test", user, pass);

См. также:

Ответ 2

Я нашел еще одну причину этого сообщения об ошибке. В моем случае пользователь просто не имел привилегий для базы данных, например. к выбранной таблице. Уважаемые разработчики драйверов, почему вы используете такие вводящие в заблуждение сообщения об ошибках? У многих людей есть настоящие проблемы с этим.

Ответ 3

Для меня было забыть включить драйвер MySQLJDBC в библиотеки проектов. DOH!

Ответ 4

Это дало эту ошибку:

Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/lib_db","root","root");

но когда я изменил это на:

Connection connection =DriverManager.getConnection("jdbc:mysql://localhost/db_name?"+"user=root&password=root");

Ошибка исчезла