TIDB3.0.3有脏数据导致出现读写冲突,脏数据清除不了

【 TiDB 使用环境】生产环境
【 TiDB 版本】 5.7.25-TiDB-v3.0.3
【复现路径】做过哪些操作出现的问题
update
user
set
f_status = ‘S1013’
WHERE
f_number in(
SELECT
(
SELECT
f_number
from
user u
WHERE
f_status = ‘S1000’)

脏数据应该是自更新导致的
【遇到的问题:问题现象及影响】


目前这台服务器上这条数据已经恢复了,报错没有了。但是数据数据库还存在脏数据

执行SQL 报错


能够看到脏数据的 f_number ,但是删除不了数据。直接通过单号查不到数据

【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

还是升级吧,这个版本都没有维护的吧

啊哈,3版本的,要不要考虑升级

在搭一套新版本的,想办法把数据迁过去…

还有其他办法?

暂时不考虑升级

这个是分别在不同的事务里产生的吗

我的是自动提交的,提交后数据中某些数据被污染了。查询数据报错SELECT * from dzqd_order_main WHERE f_channel_id=‘30010036’ AND f_createtime>‘2024-03-16 00:00:00’
– ORDER BY f_createtime LIMIT 2

1105 - InvalidDataType(“Unsupported datum flag 2 for DateTime vector”)

隔离级别是啥

image

sql_mode是啥设置

sql_mode改成‘’再查一下看看呢

改成’’ 数据库会崩?

我在当前会话中调整了sql_mode ,还是一样,数据能看到,但是不能查询


这种数据是有问题的。我发现数据id 和f_number字段值换了。
SELECT COUNT(*),f_number,f_status,f_channel_id from dzqd_order_main WHERE
f_createtime >=‘2024-03-11 00:00:00’
GROUP BY f_status

3版本太老了

要解决感觉要导出数据,重新导入,

升级吧

不会崩呀

低版本开启了 batch dml 导致的吧,可能是变更变更了一半。
数据错了看看 admin check 的结果,最好是备份还原重建一下。

另外版本太老了,这个版本已经不再维护了。不升级的话风险过大。