【发布时间】:2016-03-21 18:24:42
【问题描述】:
问题是 mysql 在我们服务器上的 CPU 上运行很高,并且持续了大约 15 分钟。在那个时候,一些到达服务器的数据并没有被插入到数据库中,而是被提交了事务。
重启mysql后问题解决。
所以这意味着即使事务提交,表中也没有新行。这方面的证据是自动递增的主键,应该如下所示:
100
101
102
但目前是这样的:
100
102
所以记录 101 丢失并被跳过。
现在我需要为该记录找到某种日志(如果存在)。
我试过mysqldump log,但那里没有记录。记录 101 仍然丢失。
我需要找到一种方法来重新创建该事务并再次执行此操作。
有没有人遇到过类似的问题?
代码基本上是这样的:
$db->autocommit(FALSE);
$sql = "INSERT INTO t (amount, datetime) VALUES ($amount, '$datetime')";
$db->query($sql);
$id = $db->insert_id;
$sql = "INSERT INTO tr (id, log) VALUES ($id, '$log')";
$db->query($sql);
$db->autocommit(TRUE);
【问题讨论】: