mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-08-11 01:03:51 +08:00
MySQL 报 Error 1205 (HY000): Lock wait timeout exceeded 时,界面归类为「查询超时或被取消」, 建议「检查 SQL 执行计划、过滤条件和索引,必要时缩小查询范围或调整超时时间」—— 这套建议对行锁等待完全无效:成因是另一个事务持锁,调大超时只会让用户等更久。 根因:timeout_or_canceled 规则里有一条过宽的 /timeout/i,而 findSqlErrorSemantic 取首个 命中的规则,于是把锁等待超时也吞成了查询超时。 - 新增 lock_contention 规则并排在 timeout_or_canceled 之前,覆盖各方言的锁竞争与死锁: MySQL 1205/1213、PostgreSQL deadlock detected 与 lock timeout、 SQL Server 1222/1205、Oracle ORA-00060/00054/30006、SQLite database is locked - 文案改为指向真正的处置动作:先提交或回滚未完成的事务(含本应用 SQL 编辑器里自己未提交的 事务)再重试,并明确说明调大查询超时无效 - 6 个语言补齐 label/explanation/suggestion - 补 4 项测试:1205 不再归类为超时、建议不再提"调整超时"、各方言锁竞争均被识别、 普通查询超时不被新规则误吞。已确认清空新规则的 patterns 后 3 项必定失败, 且失败信息正好复现原缺陷