操作
Bug(バグ) #2346
完了退会時にそのメンバーが書いた日記コメントも削除されてしまう
開始日:
2011-08-11
期日:
進捗率:
100%
予定工数:
3.6 で発生するか:
[QA]バグ通知済:
いいえ
3.8 で発生するか:
説明
Overview (現象)¶
メンバーが削除操作をおこなうと、 diary_comment.member_id の外部キーによって定義されている ON DELETE 条項に従って、そのメンバーが書いたコメントが削除されてしまう。
OpenPNE 2 では、日記コメントについては削除処理の対象に入っておらず、退会時にも投稿したコメントが消えないような実装になっていた。 http://trac.openpne.jp/browser/OpenPNE/trunk/webapp/lib/db/etc.php#L388
再現環境¶
この現象は OpenPNE 3.4.9.2 で SNS を運営しているユーザより報告を受けたものである。
この報告をうけ、現時点の stable-3.6.x ブランチ上の OpenPNE 3 で opDiaryPlugin の master を使用して構築した DB に対して、日記コメントを insert する SQL と、そのレコードに紐付いたメンバーを delete する SQL を実行し、日記コメントのレコードが削除されていることを確認した。
再現方法¶
1. ユーザAで日記を投稿する
2. ユーザBで1の日記にコメントを投稿する
3. ユーザBを退会させる
4. 1の日記にアクセスした際に、2の日記コメントが削除されている
Causes (原因)¶
schema.ymlのMemberテーブルとの関連づけにおいてonDelete CASCADEとなっている
Way to fix (修正内容)¶
上記、onDelete句を「SET NULL」に変更する
操作