tidb v6.1.0 1105, 'invalid data type: Failed to decode row v2 data as u64

tidb v6.1.0 突然报错:“1105, ‘invalid data type: Failed to decode row v2 data as u64’”
多个数据库的数据均有部分损坏,无法查询。
tidb集群状态一直正常。

有人遇到相同的问题吗?

有没有用过 lightning local 模式导入过数据?

没有用lightning。曾使用mysqldump从mysql导出数据,然后直接执行.sql导入到tidb v6.1。

:thinking:

  1. admin check 下这个表,如果索引有问题 删除重建
  2. 如果 1 没有问题,尝试 dumpling 备份这个表 看看能不能备份出来。总感觉是有非法数据 在这个表中。

mysqldump导出数据,再导入新的tidb(v6.5),也存在同样的问题。

你好
这种报错一般是有写坏的数据,最好的方法是找出写坏的数据然后覆盖写入正确的数据。

检查 TiDB 服务器日志以获取错误消息。
验证 TiDB 服务器配置。
检查 TiDB 服务器与 TiDB 集群其他组件之间的网络连接。
更新受影响表的统计信息。
使用 CAST 函数将受影响的列转换为正确的数据类型。

#!/bin/bash

# 设置 TiDB 服务器的 IP 地址和端口号
TIDB_IP="10.88.76.146"
TIDB_PORT="4000"
TABLE_NAME="my_table"
COLUMN_NAME="my_column"

# 检查 TiDB 服务器日志中的错误信息
echo "正在检查 TiDB 服务器日志..."
if grep -q "ERROR" /path/to/tidb-server.log; then
  echo "Error: TiDB server log contains error messages. Please check log file for more details."
  exit 1
fi

# 验证 TiDB 服务器配置
echo "正在验证 TiDB 服务器配置..."
if [ "$(hostname -i)" != "$TIDB_IP" ] || [ "$(curl -IsS http://$TIDB_IP:$TIDB_PORT/status | head -1 | awk '{print $2}')" != "200" ]; then
  echo "错误:TiDB 服务器配置不正确。 请检查配置文件以获取正确的 IP 地址和端口号。"
  exit 1
fi

# 检查 TiDB 服务器和其他组件之间的网络连通性
echo "正在检查网络连接..."
if ! ping -c 1 $TIDB_IP > /dev/null; then
  echo "错误:TiDB 服务器无法在网络上访问。 请检查网络连接."
  exit 1
fi

# 更新受影响表的统计信息
echo "正在更新表 $TABLE_NAME 的统计信息..."
mysql -h $TIDB_IP -P $TIDB_PORT -u root -p -e "ANALYZE TABLE $TABLE_NAME;"

# 使用 CAST 函数将受影响的列转换为正确的数据类型
echo "使用 CAST 函数将列 $COLUMN_NAME 转换为正确的数据类型..."
mysql -h $TIDB_IP -P $TIDB_PORT -u root -p -e "SELECT CAST($COLUMN_NAME AS UNSIGNED) FROM $TABLE_NAME;"

echo "TiDB 服务器检查成功完成。"
exit 0