开发者社区> 问答> 正文

canal client端获取的float类型字段的“精度”与mysql中的不一致

现象:

mysql中源表的字段类型: float(36,6) shell中查询到的该字段的值: 345.678894 (insert后查询) insert操作触发canal之后,canal中获取到的值:345.6789 (获取方法:client端column.getValue()) 问题: canal client端获取的float类型字段的“精度”与mysql中的不一致。

我曾经尝试改写 com.alibaba.otter.canal.common.utils.CanalToStringStyle.appendDetail方法,如下:

提问326.png

但是结果现实方法改写不起作用。

请问大神如何修正这个问题?

原提问者GitHub用户alexlgj

展开
收起
Java工程师 2023-05-08 19:09:46 165 0
1 条回答
写回答
取消 提交回答
  • 已修复,修改已生效,之前不生效的原因是:我没有在intellij idea中将修改的源码重新打包jar并替换所安装的canal server中的lib下的对应jar。精度不一致的修复方法:parser模块下的logeventconvert的parseOneRow方法( case Types.REAL:)将float转换为double再处理。

    原回答者GitHub用户alexlgj

    2023-05-09 19:07:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像