有时会丢失InnoDB更新和插入数据(PHP和MySQL)

时间:2016-09-15 10:04:46

标签: php mysql innodb

我们需要更新主表和子表(table_1和table_2)中的一些列,两个表都在InnoDB引擎中,实际上它正确更新,但有时在任何一个表中都没有发生更新操作。

我们已经检查了查询执行状态,并尝试检查MySQL加载,那时我们无法找到任何解决方案,请查看它并尝试为我们提供更好的解决方案,如果您想要任何进一步的更新我们来自我们的信息。

注1:据我们研究过,InnoDB有行级锁定,所以它不会影响其他行的插入或更新功能,你能否告诉我们InnoDB在什么情况下无法响应或者编码方面的任何其他建议或者可能是什么,等待你的答复。

注2:我们使用单独的连接字符串来使用PDO进行读写连接。

我在下面编写了我的代码供您参考。

$Update_CCPI_qy = "UPDATE `table_1` SET `status` = :status, `idActivateTime` = :currentTime WHERE `student_id` = :candidateID";

$Update_CCPI_exec = $pdo_connection_write->prepare($Update_CCPI_qy);
$Update_CCPI_status = $Update_CCPI_exec->execute(array( ':candidateID' => $candidateID, ':status' => 1, ':currentTime' => time()));

$Update_candidateIDNo_qy = "UPDATE `table_2` SET `status` = :status, `idActivateTime` = :currentTime WHERE `candidateid` = :candidateID";
$Update_candidateIDNo_exec = $pdo_connection_write->prepare($Update_candidateIDNo_qy);
$Update_candidateIDNo_status = $Update_candidateIDNo_exec->execute(array( ':candidateID' => $candidateID, ':status' => 1, ':currentTime' => time()));

1 个答案:

答案 0 :(得分:0)

我自己声明,经过长时间的讨论,研究和分析后,我发现innodb在某个阶段不一致,这个阶段刚好在那个表的死锁之前,所以innodb可以设法不进入死锁,但在某个层面它有时会变得不一致,这意味着它没有正确显示结果,并且可能不会在那时插入或更新。 就我的知识而言,我找到了这个解决方案,专家请回顾或确认我的答案。