tidb delete加条件删数据失败

【 TiDB 使用环境】生产环境 /测试/ Poc
生产
【 TiDB 版本】
v5.4.1
【复现路径】做过哪些操作出现的问题
1、select * from table_name where 条件字段2=xxx and 条件字段1 =‘xx’ ;


2、DELETE from table_name where 条件字段2=xxx and 条件字段1 =‘xx’;
Query OK, 0 rows affected (0.23 sec)
删除未生效
3、去掉一个条件删除也无效
select * from table_name where 条件字段2=xxx;
DELETE from table_name where 条件字段2=xxx
Query OK, 0 rows affected (0.15 sec)
4、where条件都去掉。limit 10删除成功
DELETE from table_name limit 10;
Query OK, 10 rows affected (0.00 sec)
5、反复delete不加where限制,删除100条。
DELETE from table_name limit 100;
Query OK, 31 rows affected (0.59 sec)
最后只删除了31条。剩下了删不掉查询条件的1726条

【遇到的问题:问题现象及影响】
现象:
delete加条件删不掉数据,同样条件select查看有数据,日志都未看到相关失败警告
问题影响:
线上会通过该条件删除数据,造成数据删除失败未告警,影响未知
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

最后剩下的1726条数据,delete不加where条件也删不掉

表drop掉重建还会这样吗?

命令窗口执行也是这样嘛

听着难以置信

表上有索引吧,检查下索引和表的一致性吧。。。。
ADMIN CHECK INDEX tbl_name idx_name;

1 个赞

:thinking:集群有做过什么操作么?比如备份还原,有损修复等

条件数据是否有特殊之处?

这个表历史上有做过什么操作吗?有没有检查过表的索引和数据一致性情况?

有没有行锁

1 个赞

听起来确实不可思议。可以试下重建一样的表备份好数据,再把原表删除重建试下吧。

感觉有点离谱了,如果是真的属于严重bug了,能把sql语句,表结构都完整发下吗

1 新建一张表,表结构与原来的相同,删除试试能不能行?
2新建一张表,(除主键,索引)表结构与原来的相同,删除试试能不能行?

测一下问题在哪里

会不会元数据紊乱了

听着简直是离谱妈妈给离谱开门,离谱到家了

索引删了重建下试试??

这问题确实奇怪,看看有啥日志没?

1 个赞

deletel不行 要不备份下试试truncate行不行

select * from INFORMATION_SCHEMA.CLUSTER_TIDB_TRX;

重建索引再试一下