国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Die Yii2 Mariadb-Transaktion wurde erfolgreich übermittelt, es werden jedoch keine Daten in der Datenbank gespeichert.
P粉386318086
P粉386318086 2024-03-30 23:03:30
0
1
715

Ich habe einen Code:

$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";
}

Es wurde ausgeführt und ich bekam ?Alles ist in Ordnung!“ Allerdings wird tats?chlich nichts in der Datenbank gespeichert. Der Code l?uft nun seit mehreren Monaten ohne ?nderung. Gestern hat es pl?tzlich nicht mehr funktioniert.

Nach einer Stunde Debugging kann ich best?tigen, dass der Vorgang ordnungsgem?? funktioniert, und ich kann die Zwischenergebnisse ?echoisieren“, einschlie?lich der ID des Datensatzes, den ich einfügen m?chte. Nach der endgültigen übermittlung wird jedoch nichts mehr in der Datenbank gespeichert.

Wenn ich die Transaktion entferne, funktioniert der Code und alles wird in der Datenbank gespeichert, genau wie früher bei Transaktionen.

Ich m?chte die Integrit?t der ?nderungen sicherstellen und wieder in die Transaktion einsteigen. Oder zumindest m?chte ich verstehen, welcher Code (oder Datenbankstatus oder was auch immer) die Speicherung der Daten verhindert und warum ich keine Ausnahmen erhalte und ?Fehler“ zurückgebe, weil die Transaktion nicht festgeschrieben werden konnte.

Ich war mir sicher, dass die Methode commit() eine Ausnahme ausl?sen würde, wenn das Festschreiben der Transaktion fehlschl?gt (eigentlich das Schreiben in die Datenbank), aber das ist nicht der Fall. Gibt es eine M?glichkeit, es zu bekommen?

Vielen Dank im Voraus.

P粉386318086
P粉386318086

Antworte allen(1)
P粉715304239

問題出在代碼上。 謝謝,@Michal Hyn?ica,你確實(shí)是對(duì)的。 有一個(gè)部分是這樣的:

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

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

通過在 continue; 之前添加 $tx->commit(); 解決了這個(gè)很少發(fā)生的 if:

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

  ...
  $tx->commit();
}
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage