当前位置: 首页 > 面试题库 >

Hibernate-找不到适用于jdbc的驱动程序:mysql // *

袁高明
2023-03-14
问题内容

我正在尝试在Web项目引用的Java项目中运行hibernate模式。足够简单,除了无法hibernate以连接到数据库。我有很多人描述这个问题并获得大量答案,但是似乎没有一个对我有用。

这就是我的 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>

我将代码调试为 DriverManagerConnectionProvider 类,尝试使用 getConnection() 方法会引发异常

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);

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

抛出异常

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”之后忘记了冒号:

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

这是URL格式的文档:

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

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



 类似资料:
  • 下面是我的代码: 导入com.opensymphony.xwork2.ActionSupport; 导入java.sql.DriverManager;导入java.sql.ResultSet; 附注。我使用Intellij Idea 14.1.4 有人知道原因吗?

  • 问题内容: 我正在尝试编写一个程序以在eclipse中连接到MySQL数据库,但出现错误 “ java.sql.SQLException:找不到合适的驱动程序” 。 Java代码是: } 控制台选项卡中的输出为: 我已经使用了MySQL Connector / J。将其解压缩到MySQL安装目录中,并将jar文件添加到CLASSPATH中。 另请参阅此图像。有一个 !在项目根目录上标记。image

  • 问题内容: 我写了下面的java程序 我编译了这个程序并创建了jar文件 Jar具有以下清单文件 还包含文件/folder/postgresql-8.4-703.jdbc3.jar。我通过命令启动了Sample.jar 结果,我收到以下消息 我从地址为192.168.1.10的主机启动了文件,在主机192.168.1.8上正常完成了文件。帮助消除错误。 问题答案: 您正在使用JDBC 3驱动程序。

  • java。sql。SQLException:找不到适合jdbc的驱动程序:h2:tcp://localhost/当我尝试使用java web应用程序连接到h2数据库时,抛出了~/ZadatakDB。 我可以使用H2控制台没有任何问题,ping是成功的。 我还将h2-1.3.176 jar文件添加到库和WEB-INF/lib中。 下面是我用来连接的Java方法: 我会错过什么? 我还将添加Stack

  • 我的一些代码有问题,我已经搜索并尝试了我所知道的一切,但没有任何运气。 场景: > 应用程序检查JDBC驱动程序是否存在,在本例中是H2驱动程序(org.H2.driver) 如果不存在,应用程序将下载JDBC驱动程序并将其添加到类加载器中,如下所示:(注意:storageDataManager是我用于SQL方法的一个类) 当Storage ageDataManager运行第一个查询时,它会尝试与

  • 我已经检查了这个问题的所有消息,但它是一样的,它不起作用。我必须用java连接到sql服务器2008数据库,我已经添加了sqljdbc4.jar但什么也没有。 我做的不好,如果你还需要什么,请告诉我。 我收到这条消息: Java语言sql。SQLException:未找到适合jdbc的驱动程序:sqlserver://xxx.xxx.xxx.xxx:1433;databaseName=ccis;用