EC-CUBE4で起こった不思議な現象

EC-CUBE4で起こった不思議な現象

EC-CUBE4で起こった不思議な現象

何故でしょう。

コンソールに出てくる情報とMYSQLを確認した時の情報に相違があります。

具体的には、商品カテゴリでコンソール側は親子関係が確立しているのにMYSQLを見るとparent_category_idがNullになっている。

昨日一晩寝かせたら治った事例を経験したため、今回も一晩寝かせて結果を確認する事にしました。

管理画面とMYSQLに差異のあった理由

MYSQL側で空欄だったparent_category_idが今朝確認すると求めていた形に修正されてました。

時間差で更新?そうであれば常時タイマーを動かしてないといけません。

深夜に定期実行?膨大なデータ更新の時どうすんだって問題が生じます。

調べてみたらこんな情報を見つけました。
EC-CUBE 3.0.11 変更内容に伴うプラグインへの影響 
以下、抜粋。

EC-CUBE 3.0.11にて、プラグインによる拡張時の挙動の安定化を図るためトランザクション管理をEC-CUBE本体側で一括して管理する修正が行われました。具体的には、トランザクションの挙動が以下のように変更になっています。

  • アプリケーションの開始/終了のタイミングでトランザクションのコントロールを行う
  • プラグイン内でflushを行っても、DBには即時反映しない
  • すべての処理が正常終了したときのみDBに反映する
    (システムエラー等が発生した場合は、ロールバックを行い反映しない)

EC-CUBE 3.0.11以降同じ方式が取られているようです。
なるほど、やはりすぐにMYSQLに反映させる仕様ではなかったんですね。
ますますMYSQLの直弄りは危険そうだと理解できました。

作成中の出品補助ツールもそこら辺考えて組み込まないといけなそうです。

まとめ

  • EC-CUBE管理画面で更新してもすぐにMYSQLに反映される訳ではない。
  • EC-CUBEの更新はやはり管理画面から行う必要がある。