Storage engine DeltaMerge doesn't support lossy data type modify from Nullable(Int64) to Nullable(Int32)

【概述】 场景 + 问题概述
tikv引擎没问题,tiflash报错

mysql> select /*+ read_from_storage(tiflash[scan_avail]) */ count(1) from scan_avail;                                                                                                                      
mysql>ERROR 1105 (HY000): other error: Storage engine DeltaMerge doesn't support lossy data type modify from Nullable(Int64) to Nullable(Int32) 
mysql> select /*+ read_from_storage(tikv[scan_avail]) */ count(1) from scan_avail;     
+-----------+
| count(1)  |
+-----------+
| 491227210 |
+-----------+
1 row in set (41.42 sec)

【TiDB 版本】
v4.0.4


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

为了让社区成员更好地定位问题,请尽可能详细地列出:
可复现操作
脚本
日志

可以看看是不是一样的问题,借助大佬的答案
Hi,从错误日志推测,这张表应该是有过 DDL 操作,把某个字段从 Int64 修改成了 Int32。(这个操作其实是非法操作,但是目前版本的 TiDB 没有阻止这类操作,在 4.0.9 之后会禁止这类操作。)
而 TiFlash 这边的检查比 TiDB 更严格,所以发生了报错。

你可以升级到 v4.0.6,并避免类似的 DDL 操作

  • 如果这张表没有 TiFlash 副本,则把集群升级到 v4.0.6 以上,可以避免报错
  • 如果有 TiFlash 副本,且需要使用,目前没有特别好的处理方式。可以在升级版本后,truncate 表重建然后重新导入数据。
1 个赞

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