0
問題是,mysql在我們的服務器上的CPU上運行得很高,持續了大約15分鐘。在那段時間,一些到服務器的數據沒有被插入到數據庫中,而是提交了事務。插入新記錄時,MySQL跳過了一行
重啓後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);
基本上問題是客戶端從服務器得到響應,一切正常,他得到了他的票。但是該票不在服務器上,並且不存在。所以我不需要順序標識,我只是說,跳過的標識是mysql在插入時跳過一行並且沒有拋出任何異常的證據。 – madeye
聽起來你的代碼沒有檢查事務狀態:你能添加執行這個事務的代碼嗎? –
我用代碼更新了我的問題,但我不知道這是否有助於它的非常基本的東西 – madeye