tx_isolation
を設定することにより、説明しているシナリオを回避するために、両方の接続をシリアル化可能なトランザクション分離レベルにする必要があります。 との接続ごとに:
SET @@tx_isolation = SERIALIZABLE;
または
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
または、次のコマンドでグローバル分離レベルを設定します:
SET @@global.tx_isolation = SERIALIZABLE;
または
SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
これは、後で開かれる接続によって継承されます。そのレベルでは、別のトランザクションがすでに進行中の場合、トランザクションはすべてのクエリをブロックします。トランザクションは、同じテーブルに対してすでにクエリ(読み取りまたは書き込み)を発行しています。
mysqlのドキュメント を参照してください。 詳細については。