Generator出来的_DataDictionary文件中,表格备注为空

用的是druid连接池,跟踪到获取表格的REMARKS时,确实是空的

后来查找资料,原来是连接驱动缺少参数:

String url = "jdbc:mysql://"+host+":"+port+"/"+database+"?useUnicode=true&characterEncoding=UTF8";
props.setProperty("user", username);
props.setProperty("password", password);
props.setProperty("remarks", "true");
//设置可以获取remarks信息 
props.setProperty("useInformationSchema", "true");//设置可以获取tables remarks信息
con = DriverManager.getConnection(url, props);

但在DruidPlugin中没有找到remarks这个参数,不知道别人都是怎么处理的

评论区

JFinal

2017-04-07 22:58

用的是什么数据库? mysql 数据库一定是可以的,尝试换一下 jdbc 驱动的 jar 包去解决

netwild

2017-04-08 09:31

@JFinal 用的是mysql数据库,版本5.6。jdbc驱动用的是5.1.20
刚才把驱动换成6.0.5版本的,在获取表名Meta时出现错误:
return dbMeta.getTables(conn.getCatalog(), schemaPattern, null, new String[]{"TABLE", "VIEW"});
错误描述:Table name pattern can not be NULL or empty.
就是schemaPattern参数不允许空
后来我在jdbc的url中增加了一个属性nullNamePatternMatchesAll=true倒是可以正常运行了,但是REMARKS还是获取不到
看了詹总的注释,是否需要覆盖掉MetaBuilder中的getTablesResultSet方法
给schemaPattern赋一个值呢,查不到相关的资料,郁闷

JFinal

2017-04-08 10:33

@netwild 我们在用的 mysql 都是没有问题的,建议你再多调试一下,可适当对 generator 做点扩展,这个模块中所有类都是可以通过继承并覆盖其 protected 方法进行扩展的

netwild

2017-04-08 10:36

@JFinal 感谢詹总回复,能把你用的mysql和驱动版本提供一下吗,我这都试了好几种组合了,还是不行,或者是druid版本不配套,有点抓狂

JFinal

2017-04-08 11:27

@netwild 我也是用的 5.1.20 版本

JFinal

2017-04-08 11:28

@JFinal 下载首页的 jfinal demo for maven 项目,就是社区用的版本

netwild

2017-04-08 12:00

@JFinal 刚试了一下jfinal demo for maven项目,也是无法生成REMARKS
除了数据库密码和生成器里把是否生成字典的参数设成true以外,什么都没改
pom里的依赖也都是默认的:mysql jdbc 5.1.20;druid 1.0.5
如果你们用这套环境能生成REMARKS,难道是我的mysql5.6版本不支持吗?

netwild

2017-04-08 12:38

@JFinal
终于解决了,增加两个属性配置就行了!

public static DataSource getDataSource() {
PropKit.use("a_little_config.txt");
DruidPlugin druidPlugin = DemoConfig.createDruidPlugin();
druidPlugin.start();

/**
* 配置连接属性配置,解决获取表格REMARKS为空的问题
*/
DruidDataSource ds = (DruidDataSource)druidPlugin.getDataSource();
Properties properties = new Properties();
properties.setProperty("remarks", "true");
properties.setProperty("useInformationSchema", "true");
ds.setConnectProperties(properties);

return ds;
}

JFinal

2017-04-08 16:44

@netwild 虽然解决了,但不知为何会发生这种情况,我们都没有碰到过,知道原因不?

netwild

2017-04-08 18:56

@JFinal 其实从generator发布的那天起我就没看到过生成表名备注,但由于没啥影响也就没太在意。现在是表越来越多,很多表名都有点类似,不太好理解,所以才迫切需要把表名备注也带过来。
现在我敢肯定这个不是个性问题,只是影响太小大家都没有关注而已。
具体原因我也说不太清楚,这个锅暂时只能由jdk8跟mysql5.6来背了。

JFinal

2017-04-09 10:42

@netwild 搞了半天你是希望得到 "表名" 的 remark,这个或许默认获取不到,需要参数

netwild

2017-04-09 11:30

@JFinal 字段的肯定没问题,就是表名的,怪我没说清楚,哈哈哈!

大大熊

2017-09-21 11:46

确实有这个问题,我也是JDK8 和MySQL5.6.。。

热门反馈

扫码入社