データベーストランザクションを尊重していない、SQLロックエラーが発生します。Laravel 5.2アップグレードは、我々はLaravel 5.1にいくつかの雄弁のコードでうまく一緒になっていた
DB::transaction(function() {
// Eloquent model saved here
$bla = new Bla();
$bla->blabla = 'bla';
$bla->save()
});
のBla雄弁モデルはをチェックするモデルオブザーバクラスを持つ
作成、更新、および削除し、その後ログテーブルに書き込みます。 Laravel 5.1で、これは完璧に働いていたが、5.2にアップグレードした後、トランザクションにあります忘れているようだし、それが実際にログテーブルへの書き込みをしようとするため、このエラーがスローされます:ときに我々5.2に
General error: 1205 Lock wait timeout exceeded; try restarting transaction
マインドあなたも失敗し、このモデルイベントを使って試しました。イベント/オブザーバは、トランザクションがコミットされたときではなく、すぐにログテーブルに書き込もうとします。観察者/イベントクラスをLaravel 5.2のトランザクション内で正しく動作させる方法はありますか?それともLaravel 5.1に戻すべきですか?私の現在の理論は、オブザーバがトランザクションから1レベル削除されているので、新しいコードの何かがこのレベルのトランザクションをもはや尊重しないバグを導入したということです。
ありがとうBig Al。それは確かに問題でした。 –