使用sync_diff_inspector校验表结构时报错

使用sync_diff_inspector校验表结构是否一致时报错,“[2023/09/15 16:07:36.843 +08:00] [FATAL] [main.go:129] [“failed to check structure difference”] [error=”[ddl:1629]Comment for field ‘event’ is too long (max = 1024)“] [errorVerbose=”[ddl:1629]Comment for field ‘event’ is too long (max = 1024)\ngithub.com/pingcap/errors.AddStack\n\t/go/pkg/mod/github.com/pingcap/errors@v0.11.5-0.20221009092201-b66cddb77c32/errors.go:174\ngithub.com/pingcap/errors.(*Error)"

sync_diff_inspector版本是v7.3.0

是不是字段event注释太长了?这个应该是mysql的提示

从mysql上找的

对于tables:表的注释,最多2048个字符长。
对于columns:可以使用COMMENT选项指定列的注释,最多1024个字符长。
对于INDEX:在MySQL 5.6中,索引定义可以包含最多1024个字符的可选注释。
对于PARTITION:从MySQL 5.6.6开始,分区注释的最大长度为1024个字符(以前此限制未明确定义)。
1 个赞

Comment for field ‘event’ is too long (max = 1024)

看看是不是有这个字段,注释写多长

是mysql的,从这个报错信息来看都没看到是哪张表,都不知道查哪张表

可以用这个查一下

SELECT 
    ROW_NUMBER() OVER (order by ORDINAL_POSITION) AS 序号,
    TABLE_SCHEMA AS 库名,TABLE_NAME AS 表名,
    COLUMN_NAME AS 字段,DATA_TYPE AS 类型,
    IFNULL(IFNULL(CHARACTER_MAXIMUM_LENGTH,NUMERIC_PRECISION),'') AS 长度,
    IFNULL(NUMERIC_SCALE,'') AS 小数点,
    CASE WHEN IS_NULLABLE = 'NO' THEN '√' ELSE '' END AS 是否必填,
    IFNULL(COLUMN_DEFAULT,'') AS 默认值,
    CASE WHEN COLUMN_KEY = 'PRI' THEN '√' ELSE '' END AS 主键,
    IFNULL(COLUMN_COMMENT,'') AS 注释
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'event'
ORDER BY ORDINAL_POSITION;
1 个赞

感谢回复,查了下确实看到有一张表的event字段的comment很长,超过了1024。这种情况的还有办法校验了吗

不能改一下注释么?

看了下注释内容,和业务有关系,我这边不好去改

那是不是可以放到忽略里?
https://docs.pingcap.com/zh/tidb/stable/sync-diff-inspector-overview#配置文件说明

#(可选)忽略某些列的检查,例如sync-diff-inspector目前还不支持的一些类型(json,bit,blob等)
# 或者是浮点类型数据在TiDB和MySQL中的表现可能存在差异,可以使用ignore-columns忽略检查这些列
ignore-columns = ["",""]

[task]
output-dir = “./output”
source-instances = [“mysql1”]
target-instance = “mysql2”
target-check-tables = [“test.test_config”]
target-configs = [“config1”]

[table-configs.config1]
target-tables = [“test.test_config”]
ignore-columns = [“event”]
感谢回复,按照文档进行了忽略配置,重新校验还是一样报错

:astonished:同样的字段报错么?

对的,[2023/09/15 17:40:15.552 +08:00] [FATAL] [main.go:129] [“failed to check structure difference”] [error=“[ddl:1629]Comment for field ‘event’ is too long (max = 1024)”] [errorVerbose="[ddl:1629]Comment for field ‘event’ is too long (max = 1024)\ngithub.com/pingcap/errors.AddStack\n\t/go/pkg/mod/github.com/pingcap/errors@v0.11.5-0.20221009092201-b66cddb77c32/errors.go:174\ngithub.com/pingcap/errors.(*Error)

comment超过了1024可以修改嘛

注释这么多,这是写小作文呢么 :joy:

上面说了,业务原因改不了 :thinking:

这就奇怪了,我身边没有可复现的环境。只能你再尝试一下了。

:sweat_smile:
要么先临时清空,校验完了再加上