使用MySQL8的时候出现 org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution错误。
配置文件出现了问题,与mysql 5的配置文化出现了不同
首先驱动要下载 mysql-connector-java-8.0.16.jar 点击可直接下载,官网下载也可以找到。
然后以下三项配置项出现区别,驱动包,方言和URL,驱动的包名有所变化,其中 url 的 serverTimezone=Asia/Shanghai不可少,这是MySQL8新增要求,否则会报错,而5.7以下则不需要。这是设置时区,可以更改为其它时区,这里是GMT+8上海时。
这里使用的hibernate框架的配置,如果不用则需要一定的修改。但和MySQL5配置方面应该就有如下三个区别。
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/blog?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&useSSL=false</property>
<property name="dialect">org.hibernate.dialect.MySQL8Dialect</property>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver </property>
以下是我的hibernate配置文件
<?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配置的,SessionFactory是Hibernate中的一个类,这个类主要负责保存HIbernate的配置信息,以及对Session的操作 -->
<session-factory>
<!-- 根据hibernate维护表结构方法,这里是更新 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- mysql 5请改配置为 com.mysql.jdbc.Driver -->
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver </property>
<!--设置数据库的连接jdbc:mysql://localhost:3306/dbname?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&useSSL=false,其中localhost表示mysql服务器名称,此处为本机,dbname是数据库名 若serverTimezone=Asia/Shanghai不写则会报错-->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/blog?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&useSSL=false</property>
<!--连接数据库是用户名 -->
<property name="hibernate.connection.username">root </property>
<!--连接数据库是密码 -->
<property name="hibernate.connection.password">123456 </property>
<!--hibernate.dialect 只是Hibernate使用的数据库方言,就是要用Hibernate连接那种类型的数据库服务器。 -->
<!--mysql 5请改配置为 org.hibernate.dialect.MySQL5Dialect </property> -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
<!-- jdbc.use_scrollable_resultset是否允许Hibernate用JDBC的可滚动的结果集。对分页的结果集。对分页时的设置非常有帮助
<property name="jdbc.use_scrollable_resultset">false </property> -->
<!--connection.characterEncoding连接数据库时数据的传输字符集编码方式, -->
<property name="connection.characterEncoding">utf-8 </property>
<property name="cache.use_second_level_cache">false</property>
<!--是否在后台显示Hibernate用到的SQL语句,开发时设置为true,便于差错,程序运行时可以在Eclipse的控制台显示Hibernate的执行Sql语句。项目部署后可以设置为false,提高运行效率 -->
<property name="hibernate.show_sql">true </property>
</session-factory>
</hibernate-configuration>