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

我试图在Web项目引用的Java项目中运行hibernate。 很简单,除了我不能让hibernate连接到我的数据库。 我有很多人描述这个问题并得到大量的答案,但似乎没有人对我有用。

这就是我的hibernate.cfg.xml的样子:

     com.mysql.jdbc.Driver jdbc:mysql//localhost:3306/dbname root commander  50  org.hibernate.dialect.MySQLDialect  thread  org.hibernate.cache.EhCacheProvider  true  update        

我将代码调试到DriverManagerConnectionProvider类,尝试getConnection()方法抛出exception

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

我检查了url和connectionProps,它们是hibernate.cfg.xml中的那些

我在我的tomcat \ lib文件夹中添加了mysql-connector-java-3.1.14-bin ,我可以在eclipse下的Libraries> Apache Tomcat v6.0>中看到它。 我还将它添加到我的%Javahome%\ lib \ ext和我的CLASSPATH变量(我知道这是无用的,因为我很绝望)。

我确保通过在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); 

我注意到发出第一行会导致相同的exception。

抛出exception

 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] 

我很感激能得到的所有帮助。 提前致谢。

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

你在“mysql”之后忘记了冒号:

  jdbc:mysql://localhost:3306/dbname 

这是URL格式的文档 :

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

没有合适的驱动程序始终意味着已加载驱动程序JAR,但您的URL语法不正确。

 jdbc:mysql://localhost:3306/dbname 

你错过了mysql之后

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