我有 3 个表 A、B 和 C,它们直接链接,并且应包含相同数量的行,每个表的行一起创建。
我最近注意到,在出于测试目的创建 1000 行之后(行肯定已插入,没有事务,系统稳定),并且没有任何应用程序事件,似乎缺少行。在几个小时不活动后,每个表中的随机数量的行(0-50)(例如-30、-24、-7,各不相同)似乎丢失了。
这种情况已经发生过好几次了,起初我没有注意到,但现在我很肯定。没有任何代码包含诸如 DELETE FROM table(A/B/C)
之类的内容,因此我怀疑执行此操作的编码错误。
当我注意到缺少行时,我正在使用 phpMyAdmin,并且直接 CLI 查询证实了这一点。我确信我不会意外地通过 GUI 删除行。此外,这是在本地测试环境中进行的,因此(希望)没有公共(public)访问。
MySQL 中是否存在某些内容(限制设置)可能导致此问题?这些不是不常见的表格或行,每行 10 列,CHAR
/INT
/ETC
。类型,每个表总计 250kb。
二进制日志文件是否会显示哪些行被删除以及删除时间和删除者?配置日志记录有什么特殊注意事项吗?
- 语言是PHP,MySQL是InnoDB、WAMP、Windows,通过phpMyAdmin查看
最佳答案
您正在使用 phpMyAdmin。
表的预览会提供估计的行数,如果表中有很多行,则不是实际的行数。
尝试
SELECT COUNT(*) FROM tableA;
SELECT COUNT(*) FROM tableB;
SELECT COUNT(*) FROM tableC;
并查看是否确实存在不同的行数。
否则,您是否设置了任何触发器?或者 innoDB 有任何完整性问题吗?
关于php - MySQL 行消失(神秘),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21136329/