操作
Bug(バグ) #2299
完了「紹介文を書かれたユーザーが招待したユーザー」が退会出来ない
開始日:
2011-07-26
期日:
進捗率:
100%
予定工数:
3.6 で発生するか:
[QA]バグ通知済:
いいえ
3.8 で発生するか:
説明
Overview (現象)¶
「紹介文を書かれたユーザーが招待を出したユーザー」が退会動作を行うと500エラーが発生して退会できない。
また、退会動作は管理画面、ユーザー側どちらから行っても再現いたします。
同様に「紹介文を書かれたユーザーが出した招待」を削除しようとすると500エラーが発生する。
報告元¶
http://sns.openpne.jp/diary/26651
■現象 会員の退会/強制退会を実行すると、500エラーが発生して退会できない。 ■環境 OpenPNE 3.6 beta11 ■再現手順 1.会員Aが会員Bを招待する 2.会員Bで登録&ログインして、会員A向けにフレンド紹介文を作成する 3.会員Aが会員Cを招待する 4.会員Cで登録&ログインする 5.管理画面を開いて、「メンバー管理」から会員Cを強制退会する → 500エラー画面が表示される。 6.会員Cで自主退会しても同様に500エラーとなる Apacheのエラーログには以下のエラーメッセージが記録されます。 [Thu Jul 21 23:50:20 2011] [error] [client xxx.xxx.xxx.xxx] SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`beax`.`intro_friend`, CONSTRAINT `intro_friend_member_id_to_member_relationship_member_id_to` FOREIGN KEY (`member_id_to`) REFERENCES `member_relationship` (`member_id_to`)), referer: http://xxx.xxx.xxx.xxx/pc_backend.php/member/delete/id/3 ■原因(推測) intro_friendテーブルの以下の外部キー定義に問題があるように思います。 CONSTRAINT `intro_friend_member_id_to_member_relationship_member_id_to` FOREIGN KEY (`member_id_to`) REFERENCES `member_relationship` (`member_id_to`) 再現手順を行うと、以下のようなレコード構成になります。 memberテーブル ・レコード1:会員A ・レコード2:会員B ・レコード3:会員C member_relationshipテーブル ・レコード1:A <- B ・レコード2:B <- A ・レコード3:A <- C ・レコード4:C <- A intro_friendテーブルのレコード ・レコード1:A <- B 上記状態で会員Cを削除すると、以下のように削除に失敗します。 memberテーブルのレコード3削除する → DELETE ON CASCADE定義により、member_relationshipテーブルのレコード3と4が削除される → intro_friendテーブルの外部キー定義により、member_relationshipテーブルのレコード3の削除に失敗する(Aが外部キーとして参照されている)
再現バージョン¶
- OpenPNE3.6beta11
- beta12
- beta13
- opIntroFriendPlugin-0.9.2.1
再現手順¶
1. ユーザーBがフレンドのユーザーAの紹介文を書く
2. ユーザーAがユーザーCに招待メールを送る
3. ユーザーCでプロフィール登録を行う
4. 管理画面よりユーザーCを強制退会させる
5. 500エラーが出て退会できない
手順3を行わず、手順2で送信した招待を取り消そうとしても500エラーが発生する
Causes (原因)¶
バグが発生した原因を記入
Way to fix (修正内容)¶
修正内容を記入
操作