Как исправить:" не найден подходящий драйвер для jdbc: mysql://localhost/dbname " ошибка при использовании пулов? [дубликат]


этот вопрос уже есть ответ здесь:

Я пытаюсь создать соединение с моей базой данных, когда я ставлю тест моего кода с помощью основного метода, он работает без проблем. Однако при попытке получить к нему доступ через Tomcat 7 он терпит неудачу ошибка:

No suitable driver found for jdbc:mysql://localhost/dbname. 

Я использую пул. Я поставил в mysql connector (5.1.15), dbcp (1.4) и pool(1.4.5) библиотеки в WEB-INF/lib и В.классов, а также. Я использую Eclipse IDE. Мой код для драйвера базы данных:

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

import org.apache.tomcat.dbcp.dbcp.ConnectionFactory;
import org.apache.tomcat.dbcp.dbcp.DriverManagerConnectionFactory;
import org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory;
import org.apache.tomcat.dbcp.dbcp.PoolingDriver;
import org.apache.tomcat.dbcp.pool.impl.GenericObjectPool;

public class DatabaseConnector {
    public static String DB_URI = "jdbc:mysql://localhost/dbname";
    public static String DB_USER = "test";
    public static String DB_PASS = "password";

    // Singleton instance
    protected static DatabaseConnector _instance;

    protected String _uri;
    protected String _username;
    protected String _password;

    /**
     * Singleton, so no public constructor
     */
    protected DatabaseConnector(String uri, String username, String password) {
        _uri = uri;
        _username = username;
        _password = password;

        GenericObjectPool connectionPool = new GenericObjectPool(null);
        ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
            _uri, _username, _password);
        PoolableConnectionFactory poolableConnectionFactory =
            new PoolableConnectionFactory(connectionFactory, connectionPool,
                                            null, null, false, true);
        PoolingDriver driver = new PoolingDriver();
        driver.registerPool("test", connectionPool);
    }

    /**
     * Returns the singleton instance
     */
    public static DatabaseConnector getInstance() {
        if (_instance == null) {
            _instance = new DatabaseConnector(DB_URI, DB_USER, DB_PASS);
        }
        return _instance;
    }

    /**
     * Returns a connection to the database
     */
    public Connection getConnection() {
        Connection con = null;
        try {
            con = DriverManager.getConnection("jdbc:apache:commons:dbcp:test");
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return con;
    }
}

начало трассировки стека:

Apr 5, 2011 9:49:14 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Login] in context with path [/Project] 
threw exception
java.lang.RuntimeException: java.sql.SQLException: 
No suitable driver found for jdbc:mysql://localhost/dbname

что вызывает эту ошибку?

21 83

21 ответ:

Попробуйте поместить драйвер jar в папку lib сервера. ($CATALINA_HOME / lib)

Я считаю, что пул соединений должен быть настроен еще до создания экземпляра приложения. (По крайней мере, так это работает в JBoss)

причина, по которой вы получили эту ошибку:

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/dbname

это потому, что вы забыли зарегистрировать драйвер mysql jdbc с приложением java.

вот что вы написали:

Connection con = null;
try {
    con = DriverManager.getConnection("jdbc:apache:commons:dbcp:test");
} catch (SQLException e) {
    throw new RuntimeException(e);
}

должно быть:

Connection con = null;
try {
    //registering the jdbc driver here, your string to use 
    //here depends on what driver you are using.
    Class.forName("something.jdbc.driver.YourFubarDriver");   
    con = DriverManager.getConnection("jdbc:apache:commons:dbcp:test");
} catch (SQLException e) {
    throw new RuntimeException(e);
}

вам нужно будет прочитать руководство по вашему конкретному драйверу mysql jdbc, чтобы найти точную строку для размещения внутри класса.forName("...") параметр.

класса.forName не требуется с JDBC V. 4

начиная с Java 6, Class.forName("something.jdbc.driver.YourFubarDriver") больше не нужно, если вы используете последние (с JDBC В. 4) водитель. Подробнее читайте здесь: http://onjava.com/pub/a/onjava/2006/08/02/jjdbc-4-enhancements-in-java-se-6.html

у меня была такая же проблема с использованием Tomcat7 с mysql-connector-java-5.1.26, что я поставил в обоих моих $CATALINA_HOME/lib и WEB-INF/lib, на всякий случай. Но он не найдет его, пока я не использую один из этих двух операторов, прежде чем получить соединение:

DriverManager.registerDriver(new com.mysql.jdbc.Driver ());

или

Class.forName("com.mysql.jdbc.Driver");

затем я удалил mysql-connector-java-5.1.26 из $CATALINA_HOME/lib, и соединение все еще работает.

при запуске tomcat из eclipse он не будет выбирать набор lib в CATALINA_HOME/lib, есть два способа исправить это. Дважды щелкните на сервере Tomcat в представлении Eclipse servers, он откроет конфигурацию плагина tomcat, а затем:

  1. нажмите на вкладку" Open Launch Config " > Classpath установите местоположение MySQL connector/j jar. или
  2. расположение сервера > выберите опцию, которая говорит "использовать установку Tomcat (взять под контроль установку Tomcat)"

У меня была библиотека mysql jdbc как в $CATALINA_HOME/lib, так и в WEB-INF / lib, но я получил эту ошибку . Мне нужен был урок.forName ("com.mysql.интерфейс jdbc.Драйвер"); чтобы заставить его работать.

у меня была та же проблема, все, что вам нужно сделать, это определить переменную окружения classpath для tomcat, вы можете сделать это, добавив файл, в моем случае C:\apache-tomcat-7.0.30\bin\setenv.bat, содержащих:

set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\lib\mysql-connector-java-5.1.14-bin.jar"

затем код, в моем случае:

Class.forName("com.mysql.jdbc.Driver").newInstance(); 
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database_name", "root", "");

работает нормально.

Я запускаю Tomcat 7 в Eclipse с Java 7 и с помощью драйвера jdbc для MSSQL sqljdbc4.сосуд.

при запуске кода за пределами tomcat, из автономного приложения java, это работало просто отлично:

        connection = DriverManager.getConnection(conString, user, pw);

однако, когда я попытался запустить тот же код внутри Tomcat 7, я обнаружил, что могу только заставить его работать, сначала зарегистрировав драйвер, изменив вышеизложенное на следующее:

        DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver());
        connection = DriverManager.getConnection(conString, user, pw);

добавить артефакт из maven.

 <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
 </dependency>

использование:

try {

    Class.forName("com.mysql.jdbc.Driver").newInstance();
    System.out.println("Registro exitoso");

} catch (Exception e) {

    System.out.println(e.toString());

}

DriverManager.getConnection(..

Бро, вы также можете написать код, как показано ниже:

import java.sql.*;
import java.io.*;
public class InsertDatabase {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    try
    {  
        Class.forName("com.mysql.jdbc.Driver");  
        Connection con=DriverManager.getConnection(  
        "jdbc:mysql://localhost:3306/Maulik","root","root");  

        Statement stmt=con.createStatement();  
        ResultSet rs=stmt.executeQuery("select * from Employee");  
        while(rs.next())  
        System.out.println(rs.getInt(1)+"  "+rs.getString(2)+"  "+rs.getString(3));  
        con.close();
    }

    catch(Exception e)
    {
        System.out.println(e);
    }

        }  

}

Если вы используете netbeans, вы должны добавить драйвер Mysql JDBC в список библиотек проекта, в свойствах вашего проекта

У меня тоже была такая же проблема некоторое время раньше, но я решил эту проблему.

для этого исключения могут быть разные причины. И одним из них может быть то, что банка, которую вы добавляете в свою папку lib, может быть старой.

попробуйте выяснить последняя версия mysql-connector-jar и добавьте это в свой путь к классам. Это может решить вашу проблему. Мой был решен именно так.

большую часть времени это происходит потому, что два mysql-connector-java-3.0.14-production-bin.файл jar. Один в папке lib tomcat, а другой в classpath проекта.

просто попробуйте удалить mysql-connector-java-3.0.14-production-bin.jar из папки lib.

таким образом, это работает для меня.

из того, что я наблюдал, может быть две причины для возникновения этого исключения: (1) имя вашего водителя написано неправильно. (2)драйвер не был правильно связан с проектом Java Шаги, чтобы следовать в Eclipse: (1)Создайте новый проект Java. (2)скопируйте файл jar разъем (3) щелкните правой кнопкой мыши на проекте Java и вставьте его туда. (4)щелкните правой кнопкой мыши на проекте Java - > свойства - > путь сборки Java - > библиотеки - > добавить Jar - >выберите проект ur(выберите файл jar из выпадающее меню) и нажмите кнопку ОК.

решение очень простое.

убедитесь, что соединитель базы данных может быть достигнут вашим classpath, когда под управлением (не компилируется) программа, например:

java -classpath .;c:\path\to\mysql-connector-java-5.1.39.jar YourMainClass 

кроме того, если вы используете старую версию Java (pre JDBC 4.0), прежде чем делать DriverManager.getConnection эта строка требуется:

Class.forName("your.jdbc.driver.TheDriver"); // this line is not needed for modern Java

при разработке с использованием Ubuntu (Xubuntu 12.04.1) мне "пришлось" сделать следующее:

используя

Eclipse Juno (загружено, не установлено через центр программного обеспечения), Tomcat 7 (загруженный в пользовательский каталог пользователя) также добавлен в качестве сервера в Eclipse, Динамический веб-проект с сервлетом 3.0, Сервер MySQL на локальном хосте настроен и протестирован с помощью пользователя и пароля (обязательно проверьте) Драйвер MySQL connector 5.1.24 jar,

Я "имел", и я повторяю "имел", к нам класс.Нагрузки("ком.mysql.интерфейс jdbc.Драйвер") заявление вместе с добавлением драйвера соединителя.jar должен быть в папке lib веб-проекта, чтобы он работал в этой ситуации.

важно!!: после копирования драйвера.jar to the lib убедитесь, что вы обновили свой проект в Eclipse перед запуском сервлета через Tomcat.

Я попытался добавить jar-файл драйвера соединителя через Путь сборки с загрузкой классов и без нее, но это не сработало!

надеюсь, это поможет кому-нибудь начать разработка с этой конкретной ситуацией: сообщество Java предоставляет "много" документации, но есть так много переменных, что их трудно охватить все, и это делает вещи очень трудными для нового парня.

Я думаю, что если кто-то может объяснить, почему класс.Нагрузка здесь необходима (в данной ситуации) было бы выгодно.

наслаждайтесь

поскольку никто не дал этого ответа, я также хотел бы добавить, что вы можете просто добавить файл драйвера jdbc(mysql-connector-java-5.1.27-bin.jar в моем случае) в папку lib вашего сервера(Tomcat в моем случае). Перезагрузите сервер и он должен работать.

  1. Put mysql-connector-java-5.0.8-bin.jar в $CATALINA_HOME / lib

  2. проверить наличие опечатка в URL-адрес подключения, например
    "jdbc: mysql: / / localhost: 3306 / report "('report' вот имя БД)

  3. обязательно используйте имя машины (например : localhost вместо ip-адреса (127.0.0.1))

добавьте класс драйвера в путь bootstrapclasspath. Проблема заключается в java.язык SQL.DriverManager, который не видит драйверы, загруженные загрузчиками классов, кроме загрузчика классов bootstrap.

из другого потока stackoverflow:

"во-вторых. Убедитесь, что у вас есть драйвер MySQL JDBC aka Connector/J в пути к классам JMeter. Если вы этого не сделаете - загрузите его, распакуйте и отбросьте mysql-connector-java-x.xx.xx-bin.jar в папку JMeter /lib. Возможно потребуется перезагрузка, чтобы забрать библиотеку"

пожалуйста, убедитесь в этом .jar-файл добавляется в папку lib.

вы можете вставить банку в путь времени выполнения jboss следующим образом:

C:\User\user\workspace\jboss-as-web-7.0.0.Final\standalone\deployments\MYapplicationEAR.ухо\тест.война\WEB-INF\lib ca marche 100%