为何同一MariaDB表在DBeaver中执行SELECT COUNT(*)结果不一致?
检查事务隔离级别
不同窗口的事务隔离级别差异会导致读取到不同版本的数据。执行SELECT @@tx_isolation;查看当前窗口的隔离级别,若不一致,可在查询前执行SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;统一隔离级别,再执行SELECT COUNT(*) FROM TABLE;。排查未提交事务
Python导入脚本或DBeaver窗口可能存在未提交的事务,导致数据状态不一致。执行SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;找出未提交事务,手动执行COMMIT;或ROLLBACK;提交/回滚。清理DBeaver缓存与连接残留
即使删除了复制的连接,DBeaver仍可能有缓存残留。关闭所有DBeaver窗口,找到工作区目录(通常在用户目录下的.DBeaverData或软件安装目录的workspace文件夹),删除缓存文件;或在DBeaver中右键数据库选择「刷新」,再重启软件。强制读取最新提交数据
在查询前执行START TRANSACTION READ ONLY;,然后执行SELECT COUNT(*) FROM TABLE;,最后COMMIT;,确保每次查询都基于最新的已提交数据快照。确认表的类型
排查是否误查了同名视图或分区表,执行SHOW TABLE STATUS LIKE 'TABLE';查看表类型,确认是普通InnoDB/MyISAM表,而非视图或分区表。
内容的提问来源于stack exchange,提问作者Stack_mobile2

