【環境】
フレームワーク:Zend Framework 1.12
DB:mysql 5.6.10-log
ストレージエンジン:InnoDB 1.2.10
【問題】
データの移行処理を開発中に、移行後のデータの件数をカウントしたら0件になっていました。
このデータの移行処理は、X1の1000件のデータをトランザクションを切って、X2に登録する処理をX1の全データ分行います。
トランザクションの最初では、移行処理が完了しているかを判定するために、X1、X2の件数を取得して一致していたら完了という処理を行っています。
問題は、トランザクション中にX2にinsertを行いcommitした後、次のトランザクションでX2のデータをカウントすると、0件に成ってしまうことです。
【処理のイメージ】
- トランザクション1
a. X1、X2の件数を取得、移行が完了したかを判定
b. X1 → X2 1000件登録
- トランザクション2
a. X1、X2の件数を取得、移行が完了したかを判定 →X2のデータをcountすると0件
b. X1 → X2 1000件登録
【質問】
sleepで1秒ほど待てば、このX2のデータを取得できるようになったので、おそらくトランザクションでinsertしたレコードに排他ロックがかかっており、カウントできなかったのではと推測しています。
そこで質問なのですが、前のトランザクションが終了し、insertしたデータの排他ロックが解除されたことをPHP上、または、mysql上で知る方法はあるでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。