问题描述
今天在读取表的注释信息(COMMENT)时,发现返回的REMARKS字段返回居然是null。 以下是代码示例: maven 依赖:
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.18</version>
</dependency>
</dependencies>
原因分析
Connector/J 5.0.0 以后的版本有一个名为 useInformationSchema 的数据库连接参数, 在默认连接参数情况下, useInformationSchema=false ,导致 Connection.getMetaData() 方法返回的DatabaseMetaData 对象是 com.mysql.jdbc.DatabaseMetaData,而不是 com.mysql.jdbc。DatabaseMetaDataUsingInfoSchema, DatabaseMetaDataUsingInfoSchema 是 DatabaseMetaData 是的子类,看名称就能联想到是通过 INFORMATION_SCHEMA 数据库获取数据库的 metadata,可以正确返回 table_comment 字段。
原文参考链接: dev.mysql.com/doc/connect…
解决方法
方法一:java代码实现
properties.put("useInformationSchema",true);
方法二:连接url参数
jdbc:mysql://localhost:3306?serverTimezone=Asia/Shanghai&&useInformationSchema=true