"ErrCode": 44016. dm v6.0.0 同步报错

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】
mysql8->mysql8 全量数据同步完成,上下游及task sql_mode 一致。
worker日志:
[2023/01/31 11:40:41.449 +08:00] [INFO] [streamer_controller.go:77] [“last slave connection”] [task=alydm] [unit=“binlog replication”] [“connection ID”=5178652]
[2023/01/31 11:40:41.449 +08:00] [INFO] [mode.go:101] [“change count”] [task=alydm] [unit=“binlog replication”] [“previous count”=0] [“new count”=0]
[2023/01/31 11:40:41.449 +08:00] [INFO] [mode.go:101] [“change count”] [task=alydm] [unit=“binlog replication”] [“previous count”=0] [“new count”=1]
[2023/01/31 11:40:41.449 +08:00] [INFO] [safe_mode.go:70] [“enable safe-mode because of task initialization”] [task=alydm] [unit=“binlog replication”] [“duration in seconds”=60]
[2023/01/31 11:40:41.465 +08:00] [INFO] [tracker.go:436] [“Downstream schema tracker init. “] [task=alydm] [unit=“binlog replication”] [tableID=]
[2023/01/31 11:40:41.469 +08:00] [ERROR] [baseconn.go:184] [“execute statement failed”] [task=alydm] [unit=“binlog replication”] [query=“SET SESSION SQL_MODE = ‘ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’”] [argument=”[]”] [error=“Error 1231: Variable ‘sql_mode’ can’t be set to the value of ‘NO_AUTO_CREATE_USER’”]

跟这个问题一样

TiDB版本、完整报错信息、DM任务配置都发一下吧

看你引用的那个帖子,他应该是MySQL到MySQL的同步,然后下游不支持TiDB的默认sql_mode,你也是一样的场景?是想从MySQL 8.0同步数据到5.7?

是mysql8 -》mysql8 ,worker 日志贴了,可以设置这个sql_mode嘛?

看发布日志,从8.0.11后MySQL就删除了NO_AUTO_CREATE_USER。不过如果是8 -> 8的话,为什么不直接用MySQL的复制,而是加一道DM集群?
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-11.html

其实问题是正常情况下取的sql_mode是目标库,某些取的是默认的。同步有其他方案,这不是试用一下看看有没有问题 :grin:

@buchuitoudegou 根据这个回答,在获取下游表结构时候用的是 代码写死的预定义变量defaultSQLMode的值,这个是不是用task.yaml里用户指定的sql_mode比较合适?

这种可配才有扩展

降到 5.3.0就没问题了。 :see_no_evil:

感谢反馈,我们会在 https://github.com/pingcap/tiflow/issues/8149 更新修复进度

1 个赞

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。