バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
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できないのでトランザクションの意味がないと思うのですが…

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


題名 投稿者 日時
 » トランザクション処理を組み込むとエラーが二重に acehikaru 2008/7/3 16:29
     Re: トランザクション処理を組み込むとエラーが二重に seasoft 2008/7/3 21:25
       Re: トランザクション処理を組み込むとエラーが二重に acehikaru 2008/7/4 12:51

 



ログイン


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

統計情報

総メンバー数は93,404名です
総投稿数は111,046件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2315
5
umebius
2085
6
yuh
1849
7
h_tanaka
1756
8
red
1574
9
mcontact
1465
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
804
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.