jdbc 连接 mysql 未能读取表注释信息

200 阅读1分钟

问题描述

今天在读取表的注释信息(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