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。
- admin check 下这个表,如果索引有问题 删除重建
- 如果 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