php - MySQL 行消失(神秘)

标签 php mysql sql phpmyadmin innodb

我有 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/

相关文章:

sql - 从多列创建哈希值

php - 使用 PHPExcel 读取命名表

php - 如何在 Laravel 5 中扩展和修改供应商模型?

mysql - SQL:通过子查询在一个字段中显示多个记录值

python - Apache 与 mod_wsgi 发出有关 django 中数据库的错误

php - 如何对 MySQL 数据库中的一组结果求和并避免在 PHP 中重复?

c# - 检查 Excel 工作表中是否存在列

php - 如何从 PHP 7.4+ 中的对象中删除属性

php - 如何根据行值 1、2、5、6 恢复选中和未选中的复选框

mysql - MySql TEXT 列的最大字符长度是多少?