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

Transaksi Yii2 Mariadb berjaya diserahkan, tetapi tiada data disimpan dalam pangkalan data.
P粉386318086
P粉386318086 2024-03-30 23:03:30
0
1
713

Saya ada kod:

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

Ia dilaksanakan dan saya mendapat "Semuanya baik-baik saja!" Walau bagaimanapun, tiada apa yang sebenarnya disimpan dalam pangkalan data. Kod ini telah berjalan selama beberapa bulan sekarang tanpa pengubahsuaian. Ia tiba-tiba berhenti berfungsi semalam.

Selepas sejam menyahpepijat, saya boleh mengesahkan bahawa operasi berfungsi dengan betul dan saya boleh "bergema" hasil perantaraan, termasuk ID rekod yang ingin saya masukkan. Tetapi selepas penyerahan akhir, tiada apa yang disimpan dalam pangkalan data.

Jika saya mengalih keluar transaksi, kod itu berfungsi dan semuanya disimpan dalam pangkalan data seperti biasa dengan transaksi.

Saya ingin memastikan integriti perubahan dan ingin kembali ke dalam transaksi. Atau, sekurang-kurangnya, saya ingin memahami kod (atau keadaan pangkalan data atau apa sahaja) yang menghalang data daripada disimpan, dan mengapa saya tidak mendapat sebarang pengecualian dan menggemakan "ralat" kerana transaksi tidak dapat dilakukan.

Saya pasti bahawa kaedah commit() akan mengeluarkan pengecualian jika komit transaksi gagal (sebenarnya menulis ke pangkalan data), tetapi itu tidak berlaku. Adakah terdapat cara untuk mendapatkannya?

Terima kasih banyak-banyak terlebih dahulu.

P粉386318086
P粉386318086

membalas semua(1)
P粉715304239

Masalahnya ialah dengan kod. Terima kasih, @Michal Hyn?ica, anda memang betul. Ada bahagian seperti ini:

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

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

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

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

  ...
  $tx->commit();
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan