我们需要更新主表和子表(table_1 和 table_2)中的一些列,两个表都在 InnoDB 引擎中,实际上它更新正确,但有时在任何一个表中都没有发生更新操作。
我们已经检查了查询执行状态并尝试检查 MySQL 负载,当时我们无法找到任何解决方案,请调查并尝试为我们提供更好的解决方案,如果您需要进一步的信息,请更新我们来 self 们的信息。
注意 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()));
最佳答案
我自己声明,经过长时间的讨论、研究和分析后,我发现 innodb 在该表死锁之前的某个阶段不一致,因此 innodb 可以设法不进入死锁,但在某个级别它有时会变得不一致,这意味着它无法正确显示结果,并且当时可能无法插入或更新。 就我的知识而言,我找到了这个解决方案,请专家审查或确认我的答案。
关于php - InnoDB 有时会更新和插入丢失的数据(PHP 和 MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39508315/