开发者社区> 问答> 正文

otter同步set类型出错

pid:3 nid:1 exception:setl:com.alibaba.otter.node.etl.load.exception.LoadException: java.util.concurrent.ExecutionException: com.alibaba.otter.node.etl.load.exception.LoadException: com.alibaba.otter.node.etl.load.exception.LoadException: com.alibaba.otter.node.etl.load.exception.LoadException: org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [update jz.jz_videos set category = ? where ( video_id = ? )]; Data truncated for column 'category' at row 1; nested exception is java.sql.SQLException: Data truncated for column 'category' at row 1

---Pks EventColumn[index=0,columnType=-5,columnName=video_id,columnValue=3280,isNull=false,isKey=true,isUpdate=true] ---oldPks

---Columns EventColumn[index=47,columnType=1,columnName=category,columnValue=-124,isNull=false,isKey=false,isUpdate=true] ---Sql update jz.jz_videos set category = ? where ( video_id = ? ) 原因:category字段总共有8个成员,当用到最高位时,该字段的value为一个负数,mysql执行时会提示warning,但是能成功执行,但是jdbc会抛异常导致同步停止。 请问有没有什么好的解决办法,不太了解java,源码看得头有点大,呜呜

tu28.png

为什么这里要用getInt8,而不用getUint8?如果使用getUint8是不是就不会出现set字段的value<0,jdbc就不会报异常了? 使用的是4.2.14版本,数据库sql_mode = NO_ENGINE_SUBSTITUTION,之前把这里改成getUint8之后可以正常同步。

原提问者GitHub用户l-dandelion

展开
收起
古拉古拉 2023-06-16 20:34:52 55 0
1 条回答
写回答
取消 提交回答
  • canal解析已修复

    原回答者GitHub用户agapple

    2023-06-16 21:22:29
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载