一次datax同步mysql数据为空的经历
通过select version()得到的结果是:5.6.29-mycat-1.6.7.6-release-20201112144313
起初以为是mysql驱动版本的问题,于是修改了mysqlreader插件lib中的驱动版本为5.x,但是不行,后面又以为是jdbcurl参数的问题,修改之后也不行。
最后通过自己写main方法,一点点把datax源码中获取数据的代码添加进去,发现DButil中又这么一段代码:
去掉之后,数据就查询出来了。
总结:
- MySQL/MyCat 在 setAutoCommit(false) 下,部分 SQL(尤其是大表全表扫描、分片表、只读节点等)可能会有兼容性或实现差异,导致 ResultSet 为空或行为异常。
- DataX 为了保证数据一致性,通常会在获取连接后设置 setAutoCommit(false),这在 MyCat 某些版本下会导致查不到数据。