简体   繁体   English

Hibernate - 没有为jdbc找到合适的驱动程序:mysql // *

[英]Hibernate - No Suitable driver found for jdbc:mysql//*

I am trying to run hibernate in a Java project that is referenced by a web project. 我试图在Web项目引用的Java项目中运行hibernate。 Simple enough except that I can't get hibernate to connect to my database. 很简单,除了我不能让hibernate连接到我的数据库。 I have a lot of people describing this problem and getting tons of answers however none seem to work for me. 我有很多人描述这个问题并得到大量答案,但似乎没有人对我有用。

This is how my hibernate.cfg.xml looks like: 这就是我的hibernate.cfg.xml的样子:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
    <!-- Database connection settings -->
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
     <property name="hibernate.connection.url">jdbc:mysql//localhost:3306/dbname</property>
     <property name="hibernate.connection.username">root</property>
     <property name="hibernate.connection.password">commander</property>

     <!-- JDBC connection pool (use the built-in) -->
    <property name="connection.pool_size">50</property>

    <!-- SQL dialect -->
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

    <!-- Enable Hibernate's automatic session context management -->
    <property name="current_session_context_class">thread</property>

    <!-- Enable the second-level cache  -->
    <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>

    <!-- Echo all executed SQL to stdout -->
    <property name="show_sql">true</property>

    <!-- Drop and re-create the database schema on startup -->
    <property name="hbm2ddl.auto">update</property>

    <mapping resource="com/amakena/profile/mapping/Credentials.hbm.xml"/>
    <mapping resource="com/amakena/profile/mapping/Profile.hbm.xml"/>
    <mapping resource="com/amakena/profile/mapping/City.hbm.xml"/>
    <mapping resource="com/amakena/profile/mapping/Country.hbm.xml"/>
    <mapping resource="com/amakena/profile/mapping/Gender.hbm.xml"/>
</session-factory>
</hibernate-configuration>

I debugged the code to DriverManagerConnectionProvider class, the exception is thrown attempting the getConnection() method 我将代码调试到DriverManagerConnectionProvider类,尝试getConnection()方法抛出异常

Connection conn = DriverManager.getConnection(url, connectionProps);

I checked the url and connectionProps and they are the ones in hibernate.cfg.xml 我检查了url和connectionProps,它们是hibernate.cfg.xml中的那些

I have added mysql-connector-java-3.1.14-bin in my tomcat \\lib folder and I can see it in eclipse under Libraries>Apache Tomcat v6.0>. 我在我的tomcat \\ lib文件夹中添加了mysql-connector-java-3.1.14-bin ,我可以在eclipse下的Libraries> Apache Tomcat v6.0>中看到它。 I also added it to my %Javahome%\\lib\\ext and my CLASSPATH variable (which I know is useless by I am kindda desperate). 我还将它添加到我的%Javahome%\\ lib \\ ext和我的CLASSPATH变量(我知道这是无用的,因为我很绝望)。

I made sure my driver is installed properly by running the following code just before the session.beginTransaction() which in turn leads to DriverManagerConnectionProvider.getConnection() 我确保通过在session.beginTransaction()之前运行以下代码来正确安装我的驱动程序,这反过来导致DriverManagerConnectionProvider.getConnection()

Class.forName("com.mysql.jdbc.Driver");
Properties connectionProperties = new Properties();
connectionProperties.put("user", "root");
connectionProperties.put("password", "root");
DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname", connectionProperties); 

I noticed that emitting the first line causes the same exception. 我注意到发出第一行会导致相同的异常。

Exception thrown 抛出异常

WARNING: Method execution failed: 
org.hibernate.exception.JDBCConnectionException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at     org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:345)
at $Proxy0.beginTransaction(Unknown Source)
at com.amakena.profile.dao.CredentialsDao.hydrate(CredentialsDao.java:45)
at com.amakena.profile.ProfileManager.login(ProfileManager.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.directwebremoting.impl.ExecuteAjaxFilter.doFilter(ExecuteAjaxFilter.java:34)
at org.directwebremoting.impl.DefaultRemoter$1.doFilter(DefaultRemoter.java:428)
at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:431)
at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:283)
at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:52)
at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)

Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql//localhost:3306/dbname
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
... 37 more
WARNING: --Erroring: batchId[24] message[org.hibernate.exception.JDBCConnectionException: Cannot open connection]

I appreciate all the help I could get. 我很感激能得到的所有帮助。 Thanks in advance. 提前致谢。

Versions Used: Tomcat v6.0 - Hibernate 3.6.6 - Java 6 - Eclipse 3.5.2 R35x 使用的版本:Tomcat v6.0 - Hibernate 3.6.6 - Java 6 - Eclipse 3.5.2 R35x

You forgot the colon after "mysql": 你在“mysql”之后忘记了冒号:

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

Here's the doc for the URL format: 这是URL格式的文档

jdbc:mysql://[host][,failoverhost...][:port]/[database]

No suitable driver always means that the driver JAR was loaded, but your URL syntax is incorrect. 没有合适的驱动程序总是意味着驱动程序JAR已加载,但您的URL语法不正确。

jdbc:mysql://localhost:3306/dbname

你错过了mysql之后

另一个原因是找不到驱动程序类,请确保您的驱动程序类已成功加载。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM