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");
Ошибка исчезла