引起:java.sql.SQLException:没有为jdbc找到合适的驱动程序:mysql:// localhost:3306 / domain

时间:2013-12-27 19:34:08

标签: java mysql hibernate

您好我正在使用以下

冬眠核-4.1.2.Final.jar

MySQL的连接器-5.1.6.jar

两者都可以在我的项目lib目录中找到。

我有以下 hibernate.cg.xml 配置。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- Defines the SQL dialect used in Hiberante's application -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

        <!--Local Database Connection-->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/domain</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">test</property> 

        <property name="hbm2ddl.auto">validate</property>  

        <property name="show_sql">false</property>
        <property name="format_sql">false</property>
        <property name="use_sql_comments">false</property>

        <property name="hibernate.search.default.directory_provider">ram</property> 
    </session-factory>
</hibernate-configuration>

我得到以下异常。

 Caused by: java.sql.SQLException: No suitable driver found for
 jdbc:mysql://localhost:3306/domain     at
 java.sql.DriverManager.getConnection(DriverManager.java:604)   at
 java.sql.DriverManager.getConnection(DriverManager.java:190)   at
 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:192)
    at
 org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:278)
    at
 org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297)
    ... 145 more

我不想使用JNDI做的事实管理层希望尽可能保持应用程序的可移植性,所以我错过了使用jdbc的方法吗?我是否需要对tomcat进行任何配置?

enter image description here

Tomcat Lib

enter image description here

5 个答案:

答案 0 :(得分:6)

尝试将mysql-connector-5.1.6.jar直接放入tomcat的 lib文件夹并重新启动它。

答案 1 :(得分:4)

您是否尝试过调用驱动程序类?:

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

如何称呼它:

try {
    Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
    // error out
}
Connection con = DriverManager.getConnection(/*your connection query*/);

我的课程可能有误,但如果com.mysql.jdbc.Driver不起作用,您也可以尝试com.mysql.JDBCcom.mysql.jdbc(基于SQLite如何调用它)

答案 2 :(得分:1)

您是否编辑了配置以隐藏连接字符串? 您的hibernate配置具有与错误不同的数据库名称:

<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/domain</property>

Caused by: java.sql.SQLException: No suitable driver found for
 jdbc:mysql://localhost:3306/etss

在可移植性方面,我用我的战争打包数据库驱动程序,因此它是自包含的。这使得跨多个环境的部署变得更加容易,如果另一个开发人员想要在本地构建和运行,他们只需要将战争放入Tomcat并继续。将数据库驱动程序放在WEB-INF / lib文件夹中。

另外,就可移植性而言,我推荐JNDI ......这样你就不必在将hibernate配置文件部署到另一台服务器时编辑你的hibernate配置文件,它可以在你的战争中保持打包状态。您只需在Tomcat配置中添加JNDI引用。

答案 3 :(得分:0)

发生异常是因为mysql数据库驱动程序不在您的类路径中。将其添加到类路径以修复问题。由于您使用的是tomcat,因此只需将其添加到 tomcat / lib 目录即可。

答案 4 :(得分:0)

我建议将驱动程序放在JDK扩展目录所在的位置。请参阅:http://www3.ntu.edu.sg/home/ehchua/programming/howto/ErrorMessages.html#zz-4.1

一旦完成,我鼓励您从提示类型输入: 回声%CLASSPATH%