编译:代码卫士
早在2005年6月提交的被评级为“S2(严重)” 的一个MySQL 缺陷悬置20年仍未被修复,引发社区对该开源数据库管理器的无奈和绝望。
该漏洞的编号是 “bug 11472”,被描述为“外键更新/删除后不会执行触发器”。触发器即响应事件如在特定表中插入、更新、删除时自动运行的代码,一般用于执行数据完整性。该漏洞表明,如果间接更新某个表,由于它与另外一张表之间存在的关系,该触发器不执行。
该漏洞被披露后,MySQL 团队曾表示它是“已知问题”而且“我们会在5.1版本中修复”,但实际并非如此,尽管该漏洞已在手册中被记录为“级联外键操作不会激活触发器”。
开发人员在评论该漏洞报告时提到,该漏洞“正在严重威胁威胁ACID原则/数据完整性”,之后在2015年提到“我们因尝试在级联删除上执行触发器而遭遇此问题,亟需修复方案,万分感谢!” ACID 指的是“原子性、一致性、隔离性和持久性”。
2020年,一名年轻的开发人员提到,“这个漏洞比我的年龄还大。”
该漏洞影响深远。2023年另外一名开发人员表示,“我们多年前就弃用了 MySQL——这个漏洞是压垮骆驼的最后一根稻草。我们当时需要未定制账户平台确保数据完整性。”
MySQL 在2010年作为 Sun Microsystem 的一部分被Oracle收购,而尽管该漏洞比收购的时间还要早,但仍可被视作Oracle忽视社区需求的证据。不过另一种说法认为,此类长期存在的已知缺陷不修复反而更安全,以防一些应用与其存在依赖关系,但在本案例中该论点站不住脚。
在Oracle 收购之时 MySQL 的一个分叉 MariaDB 也将此漏洞标记为“未解决”。
Reddit 论坛上出现了关于使用触发器实现数据库完整性是否是最佳实践的辩论,有人回应称,“应变措施是不使用 MySQL,应选个合理的关系数据库。”而最常见的替代选项是 PostgreSQL。另外有人戏谑称“事到如今,它算是个‘功能’了”。
DB-Engines 排行榜显示,MySQL 仍然是位列 Oracle 之后、微软 SQL Server 之前的全球第二大使用最广泛的数据库管理器。不过 MySQL 的热度在减退,而 PostgreSQL 的热度在攀升。该排行榜基于社区的提及频率和岗位招聘需求而非实际的使用数据,虽不能作为绝对参考,但仍表明 MySQL 存在衰退迹象。
去年,Percona 公司的专家Peter Zaitsev在MySQL领域深耕多年,他表示,“多年来MySQL 似乎在性能工程部门遭受了多年的忽视”并提到Oracle将重要新功能设为云端 Heatwave 的专属服务,刻意边缘化开源版 MySQL。
原文链接
https://devclass.com/2025/06/24/serious-mysql-bug-celebrates-20-years-unfixed-another-reason-to-switch-to-postgresql/
声明:本文来自代码卫士,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。