バージョン選択

フォーラム

メニュー

オンライン状況

50 人のユーザが現在オンラインです。 (44 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 50
もっと...

サイト内検索

バグ報告 > フロント機能 > トランザクション処理を組み込むとエラーが二重に

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
acehikaru
投稿日時: 2008/7/4 12:51
対応状況: −−−
半人前
登録日: 2008/6/25
居住地:
投稿: 18
Re: トランザクション処理を組み込むとエラーが二重に
>seasoftさん
レスありがとうございます。

引用:

ソフトの作りや設定によっては、コミットせずに終了したら、ロールバックというものも多いです。EC-CUBE は、そうなっていなそうな感じですかね?


postgresを使っているんで、mysqlでの挙動はちょっと分からないのですが、BEGINしたあとにCOMMITやROLLBACKをしなかった場合はアボートしてROLLBACKするっぽいです。

「BEGINしたあとのSQL失敗で二重エラーになる」というのを避けるにはクエリ実行コアのDb-connをいじらないといけなそうなので、僕はトランザクション処理を外すことで対応するのが手っ取り早いかと思います。

問題のentryの箇所については、メルマガ情報(?)のインサートを想定してトランザクション処理がくみこんであるのかと思いますが、
現状はインサート文が一つだけなので、トランザクション処理は外しても問題ないです。

seasoft
投稿日時: 2008/7/3 21:25
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7365
Re: トランザクション処理を組み込むとエラーが二重に
非常に部分的なレスですが。

引用:

この仕様だとROLLBACKできないのでトランザクションの意味がないと思うのですが…


ソフトの作りや設定によっては、コミットせずに終了したら、ロールバックというものも多いです。EC-CUBE は、そうなっていなそうな感じですかね?


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

acehikaru
投稿日時: 2008/7/3 16:29
対応状況: −−−
半人前
登録日: 2008/6/25
居住地:
投稿: 18
トランザクション処理を組み込むとエラーが二重に
何をいってるかわからないかも知れないですが、そのままの現象を書きます。

会員登録処理で同時に他のテーブル(DB)にも書き込みたいと思い、トランザクション処理の確認をしたときの話です。

/data/class/pages/entry/LC_Page_Entry.php
の「lfRegistData()」にあたる箇所で既にBEGINなどの処理が組み込まれているので、
このBEGINからCOMMITまでにあるインサートSQLが失敗した場合を想定して、以下のようにわざとエラーが出るように変更してみました。

       //-- 仮登録実行
        $objConn->query("BEGIN");

        $objQuery = new SC_Query();
        $objQuery->insert("dtb_customer", $arrRegist); 


        //-- 仮登録実行
        $objConn->query("BEGIN");

        $objQuery = new SC_Query();
        $objQuery->insert("db_customer", $arrRegist); 

これで実行したところ、
「システムエラーです」の画面がでるのは良いのですが、
なぜか二重に表示されます。
<HTML>〜<HTML>のソースが二重に出力されました。

ログを見ると、
どうやらクエリ実行のタイミングで一度エラーページを出力していますが、クエリがエラーになると以降の処理が全て無視されるようで、
トランザクションが正しく終了していないというエラーのため、もう一度エラーページを出力。
となっているようです。

この仕様だとROLLBACKできないのでトランザクションの意味がないと思うのですが…

説明がうまくできないんですが、会員登録時のエラー処理がおかしいのでは?という話です。
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,288名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.