# [Known-Issues]并行 DDL 导致 TiFlash 启动报错：Storage engine DeltaMerge doesn't support lossy data type modification

## Key Words

TiFlash, DDL, 有损变更

## Description

在同一个表的同一列并行执行了多个 DDL 后，Tiflash 发生 panic ，启动报错：Storage engine DeltaMerge doesn't support lossy data type modification

## Root Cause

在多个 Session 同时执行有损的列类型变更（modify column col char -> int），由于后执行列类型变更操作时用旧列（两个 DDL 语句都没有执行前）的 ID 覆盖了新列 ID，导致表结构中列类型和数据不一致。在 TiFlash 启动时，因为数据类型不正确而抛出异常。

## Diagnostic Steps

1、TiDB 版本为 v5.1.0 及以上版本（具体参考影响版本）

2、Tiflash 已支持数据类型的变更，但是报错提示不支持有损变更，并且 Tiflash 发生 Panic，启动报错："Storage engine DeltaMerge doesn't support lossy data type modification"

3、使用命令：admin show ddl jobs 查看该表对应 DDL 运行记录，确认是否有并行 DDL，对一个表的同一列，且执行的语句都是有损变更（即需要 reorg data 的类型）

4、由于 Schema 信息与列数据不匹配，TiDB 可能会有如下报错现场，取决于列变更的类型以及后续的写入操作类型：

* 对数据访问报 “insufficient bytes to decode” 错误
* 对数据更新报 “Out of range value for column” 错误
* 对数据访问不报错，但数据不正确，例如出现乱码字符或是非预期的数值
* ADMIN CHECK TABLE 校验数据/索引一致性报错

## Resolution

升级到已经修复版本，如 5.1.5、5.2.4、5.3.1

## Workaround

1、如果业务条件允许：可以先删除该字段或该表，重启 TiFlash 即可，再补充回来该字段或表。

2、更多具体场景的修复建议，见 [Critical bug](../tidb/%5BCritical%20bug%5D%20%E5%B9%B6%E8%A1%8C%E6%89%A7%E8%A1%8C%E6%9C%89%E6%8D%9F%E5%88%97%E7%B1%BB%E5%9E%8B%E5%8F%98%E6%9B%B4%E6%97%B6%EF%BC%8C%E5%AF%BC%E8%87%B4%E8%A1%A8%E7%BB%93%E6%9E%84%E4%B8%AD%E5%88%97%E7%B1%BB%E5%9E%8B%E5%92%8C%E6%95%B0%E6%8D%AE%E4%B8%8D%E4%B8%80%E8%87%B4.md)

## Affected Versions

v5.3.0

v5.2.0 - v5.2.3

v5.1.0 - v5.1.4
