MySQL 8.0驱动遇到的坑
盘点最近遇到的两个关于jdbc连接数据库的坑:
1.驱动问题
之前:com.mysql.jdbc.Driver
之后:com.mysql.cj.jdbc.Driver
如果在maven中版本在8.0以后就用后者。
2.数据库连接地址发生改动
数据库连接地址上需要指定时区(serverTimezone=UTC),要不然会报错。
3.getTables返回所有库的表问题
8.0版本驱动DataSource相关的参数有变化:
8.0版本驱动将参数 nullCatalogMeansCurrent 的默认值由true改为了false,如果你使用DatabaseMetaData.getTables
获取所有的表信息,8.0版本驱动将返回所有库的表。
解决方法:
在数据库连接地址继续拼接参数:&nullCatalogMeansCurrent=true
url=jdbc:mysql://{ip}:3306/{数据库}?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&nullCatalogMeansCurrent=true