作为一个成熟的ORM框架,Hibernate对不同的数据库的支持可以说非常完美,但是在生成数据库的过程中还是会遇到各种各样的问题,今天在做数据表映射的时候,发现无法生成数据表,具体的开发环境如下:
作为一个成熟的ORM框架,Hibernate对不同的数据库的支持可以说非常完美,但是在生成数据库的过程中还是会遇到各种各样的问题,今天在做数据表映射的时候,发现无法生成数据表,具体的开发环境如下:
Hibernate 5.2.3.FinalMySQL Windows 5.5.16MySQL connector 5.1.39
发现这个问题之后,梳理一下思路,从以下几个方面查找问题:
首先查看自己的代码写的有没有问题,启动Hibernate的代码如下:
Configuration config = new Configuration().configure(); ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder(bsr).applySettings(config.getProperties()).build(); SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);
这是基本的Hibernate启动代码,非常简单,没有任何问题。
查看连接MySQL数据库的配置,包括但不限于如下:
用户名和密码是否正确主机和端口是否正确方言dialect是否正确
之后查看MySQL 服务器的问题,包括但不限于下面:
服务器是否开启
用户是否有权限执行相关的操作
数据库服务器的是否已经到最大连接数,默认是100,查询如下:
SHOW VARIABLESLIKE'max_connections'
但是经过检查上面各个方面,发现没有任何问题,每当到这个时候时候我都开始怀疑人生,甚至是怀疑数据库本身是不是有bug。既然和单独一方面没有关系,那么是程序和数据库的连接关系上出了问题,那就是MySQL的驱动问题,换了一个最新版本的数据库驱动,MySQL Connector 6.0.6,结果发现果然是会玩,竟然连MySQL的驱动类都改了,该版