为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【TiDB 版本】4.0.8
dm 2.0
【问题描述】
mysql 建表sql: CREATE TABLE make_model_super202
(
id
int(11) GENERATED ALWAYS AS (json_unquote(json_extract(ext
,’$.id’))) STORED NOT NULL,
name
varchar(40) GENERATED ALWAYS AS (trim(json_unquote(json_extract(ext
,’$.name’)))) STORED NOT NULL,
network
varchar(10) GENERATED ALWAYS AS (json_unquote(json_extract(ext
,’$.wangluo’))) VIRTUAL NOT NULL,
make
varchar(150) GENERATED ALWAYS AS (json_unquote(json_extract(ext
,’$.pinpai’))) STORED NOT NULL,
model
varchar(150) GENERATED ALWAYS AS (json_unquote(json_extract(ext
,’$.jixing’))) STORED NOT NULL,
crdate
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
ts
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
ext
text NOT NULL,
PRIMARY KEY (id
),
KEY crdate
(crdate
),
KEY ts
(ts
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
通过dm 同步到tidb,好像有问题,手动在tidb上执行上述sql;
然后从mysql插入,一条数据,同步依然报错,信息如下:
“Message”: “startLocation: [position: (db165.182183, 533850403), gtid-set: ], endLocation: [position: (db165.182183, 533850712), gtid-set: ]: gen insert sqls failed, schema: ex_public, table: make_model_super202: Column count doesn’t match value count: 4 (columns) vs 8 (values)”,
另外,在上述sql上将ext 类型换成json的话,navicate打开表时只显示7个列,并不是8个,我们是先用的json,json同步报错,才变成的text,修改后navicate显示的是8列
插入数据sql如下: INSERT INTO make_model_super202
VALUES (1, ‘dd’, ‘333’, ‘a’, ‘3444’, ‘2021-1-27 20:51:44’, ‘2021-1-27 20:51:44’, ‘{“id”: 1, “pinpai”: “a”, “name”: “dd”, “wangluo”: “333”, “jixing”: “3444”, “lianjie”: “”, “beizhu”: “”, “tijiao_name”: “”, “shenhe_name”: “”, “shenhe”: 0, “time”: “2020-10-15 03:45:29”, “create_time”: null, “update_time”: null, “delete_time”: 0 }’);
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。