插入后缺少行

时间:2014-11-24 15:58:54

标签: php mysql innodb

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

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

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

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

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

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

BTW,我还发现,在PHP循环中还有其他INSERT查询,它们也没有被插入。

MySQL:5.6.21 引擎:InnoDB

1 个答案:

答案 0 :(得分:0)

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

SET autocommit = 0

它永远不会回到1。