php - 插入后缺少行

标签 php mysql innodb

我有一个 php 应用程序,它将行插入表 A,这是非常简单的查询。 每 10-15 分钟一类。 直到上周,它还没有出现任何问题,但在磁盘故障之后,我将数据库移动到另一台服务器,这个问题开始发生。

没有返回错误,日志上没有任何内容,但我的插入丢失了。

有一个循环为每个循环插入一个新行。

每次插入后,我都会检查 mysqli_insert_id,然后将其记录到文件中。 然后我运行一个 SELECT 查询来检查该主字段是否确实在表中,是的。 受影响的行数为 1。 但是,当我从不同的 mysql 连接运行 SELECT 查询时,在 PHP 停止执行之前(因此它的连接仍然存在),什么也没有显示。

看起来像是自动回滚,但我没有发现任何死锁,使用了pt-deadlock-logger; http://www.percona.com/doc/percona-toolkit/2.1/pt-deadlock-logger.html

不知道是否还有其他原因导致自动回滚。

顺便说一句,我还发现,该 PHP 循环中还有其他 INSERT 查询,但它们也没有插入。

MySQL:5.6.21 引擎:InnoDB

最佳答案

我发现了问题,在我们的应用程序代码深处的某个地方,我发现有时会执行此查询;

SET autocommit = 0

并且它永远不会被设置回 1。

关于php - 插入后缺少行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27108916/

相关文章:

c# - 如何显示数据库 ASP.Net 中的特定行记录?

mysql - InnoDB 二级索引包括值而不是指向 PK 的指针,这怎么够了?

php - 单个字符给出错误 : "Data too long for column" when using PDO with MySQL - Why?

php - max_input_time= -1 -1 的具体含义是什么?

php - 如何将 mysqli_stmt_affected_rows() 与准备好的语句一起使用?

php - 静态值不显示(COUNT、UNION ALL 查询)

MySQL断言

Mysql删除超过10秒的记录

mysql - 一旦我想要整个数据库的 InnoDB,如何告诉 SQLAlchemy?

目录表中的 PHP HTML 图像