zzw6776
(bug发现者)
2023 年7 月 1 日 09:49
1
【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.5.1
dm版本:v5.4
背景:
tidb作为下游的从库,字段是一直比mysql多的,之前都运行的好好的,但是今天突然报了一个Column count doesn’t match value count错误
目前问题已经解决,解决方案为运行一下命令
tiup dmctl --master-addr 192.168.10.148:8261 operate-schema set -s xxxx xxxx -dxxxx -t h_thirdcommunityid_communityid 1.sql
发这个贴的目的有2个
1:反馈个官方文档的bug,这个文档里这个用法是错的
https://docs.pingcap.com/zh/tidb/stable/migrate-with-more-columns-downstream
如果是 binlog-schema 那么正确的语法应该是这样的
dmctl binlog-schema update <task-name> <database> <table> [schema-file] [flags]
2:为什么在正常运行的情况,突然会报这个错误,如果按这篇文章的说法
https://docs.pingcap.com/zh/tidb/stable/dm-manage-schema
只有在task-mode=incremental可能会出现该问题,但是这个任务使用task-mode=all启动的,而且运行了非常久了
redgame
(Ti D Ber Pa Amoi Ul)
2023 年7 月 1 日 10:39
2
有重启dm-worker进程不,另外确保映射关系正确。
zzw6776:
【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.5.1
dm版本:v5.4
背景:
tidb作为下游的从库,字段是一直比mysql多的,之前都运行的好好的,但是今天突然报了一个Column count doesn’t match value count错误
目前问题已经解决,解决方案为运行一下命令
tiup dmctl --master-addr 192.168.10.148:8261 operate-schema set -s xxxx xxxx -dxxxx -t h_thirdcommunityid_communityid 1.sql
发这个贴的目的有2个
1:反馈个官方文档的bug,这个文档里这个用法是错的
如果是 binlog-schema 那么正确的语法应该是这样的
dmctl binlog-schema update <task-name> <database> <table> [schema-file] [flags]
2:为什么在正常运行的情况,突然会报这个错误,如果按这篇文章的说法
https://docs.pingcap.com/zh/tidb/stable/dm-manage-schema
只有在task-mode=incremental可能会出现该问题,但是这个任务使用task-mode=all启动的,而且运行了非常久了
关于你的第一点,你提到官方文档中有一个错误。 看来文档中提供的用法不正确。 使用 dmctl 更新 binlog-schema 的正确语法应该是:
dmctl binlog-schema update <任务名称> <数据库> <表> [架构文件] [标志]
关于你的第二点,你提到错误是在一个任务模式=全部运行了很长时间的任务中突然发生的。 您在 TiDB 文档中链接到的问题指出,“列计数与值计数不匹配”错误通常发生在任务模式=增量中。 但是,在您的情况下,由于您使用的是 task-mode=all,因此意外地会遇到此错误。
liuis
(心安是吾乡)
2023 年7 月 3 日 02:15
6
这chatgpt回复真的恶心,没有啥实质参考意义,还写一大堆,扰乱正常的回复
1 个赞
有猫万事足
2023 年7 月 3 日 02:48
7
【 TiDB 使用环境】测试
【 TiDB 版本】
Release Version: v6.5.1
Edition: Community
Git Commit Hash: 4084b077d615f9dc0a41cf2e30bc6e1a02332df2
Git Branch: heads/refs/tags/v6.5.1
UTC Build Time: 2023-03-07 16:12…
我原来碰到过这个问题。最后binlog里面看到是上有执行了create table if not exists。
就是从binglog filter过滤create table也会导致schema发生变化。
解决方法也和你一样的,直接把schema改回来。
zzw6776
(bug发现者)
2023 年7 月 3 日 03:22
8
你这个情况 create table if not exists执行完后 dm报的错是刚create的那个表 还是会连带着其他表也报错呀
有猫万事足
2023 年7 月 3 日 03:33
9
刚create的那个表。没有执行的schema不会变。
但是上游的create table if not exists和这个表是否存在没有关系。
也就是说,你上游已经存在的表,又执行了一遍create table if not exists,这个语句即便实际什么也没做,其对应的下游schema也会变。