Hibernate - no. Suitable driver for jdbc: mysql // *

I am trying to run hibernate in a Java project referenced by a web project. Simple enough, except that I cannot get hibernation to connect to my database. I have a lot of people who describe this problem and get tons of answers, but no one works for me.

This is what my hibernate.cfg.xml looks like:

<?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 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 for the DriverManagerConnectionProvider class, an exception throws an attempt to getConnection () method

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

I checked url and connectionProps and they were in hibernate.cfg.xml

I added mysql-connector-java-3.1.14-bin to my tomcat \ lib folder and I see it in eclipse under "Libraries"> "Apache Tomcat v6.0>". I also added it to my% Javahome% \ lib \ ext and my CLASSPATH variable (which, as I know, is useless, I desperately love).

I made sure that my driver was installed correctly by running the following code immediately before session.beginTransaction () , which in turn leads to 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 throws 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.

Used versions: Tomcat v6.0 - Hibernate 3.6.6 - Java 6 - Eclipse 3.5.2 R35x

+4
source share
3 answers

You forgot the colon after "mysql":

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

Here's the doc for the URL format:

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

There is no suitable driver, it always means that the driver JAR is loaded, but your URL syntax is incorrect.

+15
source
 jdbc:mysql://localhost:3306/dbname 

You are missing: after mysql

+5
source

Another reason is that the driver class was not found; make sure that your driver class is loaded successfully.

0
source

Source: https://habr.com/ru/post/916717/


All Articles