mysql/jdbc:设置useInformationSchema=true读取表注释信息(table_comment)
问题描述
今天在读取表的注释信息(COMMENT)时,发现返回的REMARKS字段返回居然是null.
以下是代码示例:
DatabaseMetaData meta = this.pConnection.getMetaData();
// 获取所有表信息
ResultSet resultSet = this.meta.getTables(this.catalog, tableSchema, pattern, this.tableTypes);
while (resultSet.next()) {Table table = new Table();# 返回nullString comment=resultSet.getString("REMARKS");
}
resultSet.close();
原因分析
google找了半天,总算知道原因:
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
字段。
下面是useInformationSchema
的官方说明
useInformationSchema
When connected to MySQL-5.0.7 or newer, should the driver use the INFORMATION_SCHEMA to derive information used by DatabaseMetaData?
Default: false
Since version: 5.0.0
摘自《5.1 Driver/Datasource Class Names, URL Syntax and Configuration Properties for Connector/J》
而父类DatabaseMetaData
并不一定能正常返回table_comment
字段.
关于INFORMATION_SCHEMA 这里不深入探讨,参见《Chapter 24 INFORMATION_SCHEMA Tables》
解决方法
解决的方法也很简单:
数据库连接时设置useInformationSchema=true
如何设置数据库连接参数呢?有两个途径
方法一:java代码实现
# 将所有参数装入java.util.Properties 对象
Properties props = new Properties();
props.setProperty("username",this.username);
props.setProperty("password",this.password);
props.setProperty("useInformationSchema", "true");
# 调用getConnection(String,Properties)方法创建连接
this.pConnection = java.sql.DriverManager.getConnection(this.url, props);
方法二:连接url参数
直接将参数加到数据库连接url,如下代码中在数据连接url中添加了两个参数characterEncoding=utf8
和useInformationSchema=true
String url="jdbc:mysql://localhost:3306/test?characterEncoding=utf8&&useInformationSchema=true"
this.pConnection = DriverManager.getConnection(this.url, this.username,this.password);
关于mysql 连接URL的语法参见:
《5.1 Driver/Datasource Class Names, URL Syntax and Configuration Properties for Connector/J》
参考资料
《Connector/J does not retrieve the table comment in a InnoDB table》
《Retrieve mysql table comment using DatabaseMetaData》
《Chapter 24 INFORMATION_SCHEMA Tables》
《5.1 Driver/Datasource Class Names, URL Syntax and Configuration Properties for Connector/J》
mysql/jdbc:设置useInformationSchema=true读取表注释信息(table_comment)相关推荐
- jdbc mysql user_tab_comments_mysql/jdbc:设置useInformationSchema=true读取表注释信息(table_comment)...
问题描述 今天在读取表的注释信息(COMMENT)时,发现返回的REMARKS字段返回居然是null. 以下是代码示例: DatabaseMetaData meta = this.pConnectio ...
- mysql in and in_完美解决mysql in条件语句只读取一条信息问题的2种方案
今天同事在编写MYSQL查询语句时遇到一个很奇怪的问题,使用mysql多表查询,一个表中的某个字段作为另一表的in查询条件,只能读取一条信息,而直接用数字的话可以正常读取 SQL语句如下: selec ...
- mysql怎么设置每天定时清表_Mysql每天定时清空表
Mysql每天定时清空表 1.设置开启event scheduler SET GLOBAL event_scheduler=1; 2.验证event_scheduler是否已经开启 show vari ...
- php mysql 字段备注_MySQL下读取 表/字段 的说明备注信息
在MySQL下运行完下面这个建表语句后. 如何从数据字典中,检索出这个表的字段的相关信息? DROP TABLE IF EXISTS test_table; CREATE TABLE test_tab ...
- printk在应用层的设置方式及读取内核打印信息的方法
如果 printk 中没有加调试级别,则使用默认的调试级别.注意,调试级别和格式化字符串之间没有逗号.当前控制台的各打印级别可以通过下面的命令来查看. # cat /proc/sys/kernel/p ...
- mysql出现1018错误,没有权限读取表
一.遇到问题: 某天清晨,开开心心来上班,打开电脑点击navicat工具,点击mysql中的smsdb表,却出现了下面的提示: 当时瞬间就蒙蔽了,怎么会没有权限呢,用root登陆也出现该问题 二.解决 ...
- mysql查字段的备注_Mysql 查看表注释或字段注释
查看所有表的注释 SELECT table_name 表名, table_comment 表说明 FROM information_schema.TABLES WHERE table_schema = ...
- oracle建表加compress,oracle 建表后添加表注释及字段注释
oracle添加表注释和表字段注释 创建Oracle数据库表时候加上注释 CREATE TABLE t1( id varchar2(32) primary key, name VARCHAR2(8) ...
- mysql数控不小心被删_mysql 数据库信息不小心被删除了, 请问能恢复么
展开全部 自动备份,另一种方法请看 每个 DBA 是不是都有过删库的经历?删库了没有备份怎么办?备份恢复后无法启动服务什32313133353236313431303231363533e78988e6 ...
最新文章
- c语言inline详解
- 2018.9.8-9.8 统计学课程笔记(2)-参数统计
- F5 Priority Group Activation
- 每日一皮:宿舍阿姨眼中的单身狗...
- 【Python】随心所欲地用Python处理时间
- Mysql当前模式让不记录日志_MySQL日志binlog的三种模式
- 条件控制(if ) ( case)
- Linux下的一些简单网络配置命令介绍
- 网页嵌入对象(图片、视频、网页)
- 网页制作 css样式,网页设计与制作-CSS样式.ppt
- 设计师所需图标素材网站,不用到处找了,都在这!
- g2 折线图点与点之间直线_g2曲线图 每条曲线有单独的选中效果和tooltip
- 统计匹配检索规则的物品数量
- [转]PowerDesigner使用技巧
- 【PLSQL】PLSQL安装、破解以及汉化教程
- WP Super Cache远程代码执行漏洞分析
- 口碑、银盒子相关功能是否支持问题
- 纽约州立大学石溪分校计算机专业排名,纽约州立大学石溪分校排名怎么样?
- 通过access口加vlan标签吗_[转载]vlan与trunk打标签过程
- qpython3手机版turtle_使用Python turtle画一片树林