当前使用版本(必填,否则不予处理)
3.3.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
情况一
本地MySQL: 5.7.19-log 测试环境MySQL: 5.6.29-mycat-1.6.7.1-release
- 两库表结构均相同
- 连上本地的MySQL生成CRUD接口以及POJO之后(正常生成)再连接远程测试环境MySQL测试CRUD发现报:
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
情况二
- 直接连远程测试环境MySQL执行生成CRUD接口功能时报如下错误:
java.sql.SQLException: No dataNode found ,please check tables defined in schema: databaseName
排查
发现设计人员在设计表结构的时候有个别字段用了MySQL关键字,在对应的POJO字段加上:
@TableField(value = "`desc`")
private String desc;
之后发现情况一正常与测试服务器执行CRUD,情况二指定成没有关键字字段的表依然报如上情况二的错误(数据库链接配置等均一样)。
结论
generator 在生成POJO和xml 文件的时候是不是应该判断一下是不是对应的数据库关键字,如果是的话自动在POJO字段加@TableField(value = "`关键字`")`注解?
通过查看最新的generator源码,发现com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler包5月份已经添加上了,只是还未用?
重现步骤(如果有就写完整)
如上
报错信息
如上
Comment From: nieqiurong
需要自己指定使用,没弄自动配置。
new DataSourceConfig().setKeyWordsHandler(new MySqlKeyWordsHandler());
Comment From: xdshent
需要自己指定使用,没弄自动配置。
java new DataSourceConfig().setKeyWordsHandler(new MySqlKeyWordsHandler());
好的