簡體   English   中英

Yii2 Mariadb 事務提交正常,但沒有任何內容存儲在數據庫中

[英]Yii2 Mariadb transaction commits fine, but nothing gets stored in DB

我有一個代碼:

$tx = Yii::$app->db->beginTransaction();
try {
  // CODE (a lot of active-record reads and writes)
  $tx->commit();
  echo "All good!";
} catch (\Throwable $ex) {
  $tx->rollback();
  echo "Error";
} 

它執行,我得到“一切都好”。 結果,然而。 沒有任何內容實際存儲在數據庫中。 到目前為止,該代碼已經運行了幾個月並且不是 modieid。 它昨天突然停止工作。

經過一個小時的調試,我可以確認操作 go 正常,我可以“回顯”中間結果,包括我插入的記錄的 ID。 但是在最終提交之后仍然沒有任何東西保存在數據庫中。

如果我刪除事務,代碼就可以工作,並且所有內容都存儲在數據庫中,就像過去使用事務一樣。

我想確保更改的完整性,想回到事務中。 或者,至少,我想了解哪些代碼(或 DB state 或其他任何代碼)阻止了數據的存儲,以及為什么我沒有收到任何異常並且我的“錯誤”回顯,因為事務未能提交。

我確信如果事務無法提交(實際上是寫入數據庫),commit() 方法會拋出異常,但事實並非如此。 有沒有辦法得到它?

非常感謝你提前。

問題原來是在代碼中。 謝謝,@Michal Hynčica,您確實是對的。 有一部分是這樣的:

foreach (..) {
  $tx = Yii->$app->db->beginTransaction();
  if ($oneRareCondition) {
    continue;
  }

  ...
  $tx->commit();
}

通過添加$tx->commit();解決了continue; 在那個很少發生的if中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM