tidb对mysql enum类型得支持

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:tidb4.0.8 ,mysql 5.7.27 dm:2.0nightly
  • 【问题描述】:利用dm工具全量拿mysql数据,发现mysql 和tidb 两边enum类型数据不一致:
    具体如:
    is_credit_control enum(‘0’,‘1’) DEFAULT ‘0’
    mysql表中得此字段是:0,tidb表中此字段得值是1
    tidb对mysqlenum 类型得支持是不是不太友好,有没有方法解决

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

这个情况还是和上次一样吗? 在老表中添加 新列
Mysql 此字段是 0 tidb 中是 1
是这个意思吗?
我这边模拟测试下。

和上次不一样,这个是历史数据,,全量从mysql拿到tidb,同一条id得 is_credit_control enum(‘0’,‘1’) 值不一样

表得数据量一共120万左右,is_credit_control字段值不同得有几十万

如果通过 数据导入有两个方法可以确认下

1.查看导入时的源数据同 ID 的值是否与 tidb 中的值是否一致。
2.如果 GC 的 lift time 比较长 可以通过查看 MVCC 的历史版本确认数据是否有更新。
curl http://{TiDBIP}:10080/mvcc/key/{db}/{table}/{handle}
handleid 是 应为 int 型主键 id

“key”: “7480000000000012955F729081A8ACB181D00C”,
“region_id”: 158473,
“value”: {
“info”: {
“writes”: [
{
“start_ts”: 421761290872029209,
“commit_ts”: 421761290898243591,
“short_value”: “gAAIAAAAAgMEBQYHCAoNAA4ADwAdACUAKwAzADQAUEFZMTkxMDMwMDAxMQICVEsxOTEwMjAwMTA3MDEAAACW2nykGemZiOasowAAAColM6gZAA==”
},
{
“start_ts”: 421555157087551497,
“commit_ts”: 421555157952626689,
“short_value”: “gAAIAAAAAgMEBQYHCAoNAA4ADwAdACUAKwAsAC0AUEFZMTkxMDMwMDAxMQIBVEsxOTEwMjAwMTA3MDEAAACW2nykGemZiOasowAA”
}
]
}
}

{
“start_ts”: 421555157087551497,
“commit_ts”: 421555157952626689,
“short_value”: “gAAIAAAAAgMEBQYHCAoNAA4ADwAdACUAKwAsAC0AUEFZMTkxMDE4MDAwMQIBVEsxOTA5MjcwMDIzNjEAAADXCGWkGemZiOasowAA”
}
这条是 12 月 16 日的数据

解析 base64 short_value 如下
%+,-PAY1910180001TK190927002361e陈欣
可以确认下数据是否可以对上

从 整个 MVCC 来看 12.16 一次数据修改 、12.25 二次数据修改

是得,发现数据有不一致,手动做了一次修复,, ,请问你这个是怎么看具体得数据内容呢

可能是上下游sql_mode不一致,查看上下游sql_mode是否包含STRICT_TRANS_TABLES

好的,谢谢

short_value里面是 bas64 的数据 ,有在线的 Base64 解码工具