Bug(バグ) #2346
退会時にそのメンバーが書いた日記コメントも削除されてしまう
100%
説明
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」に変更する
関連するチケット
関係しているリビジョン
(fixes #2346) change the foreign key reference to `member` on `diary_comment` from onDelete CASCADE to SET NULL
履歴
#1 Shingo Yamada が12年以上前に更新
- 優先度 を Normal(通常) から High(高め) に変更
#2 Shingo Yamada が12年以上前に更新
- 360対象 を RC1 にセット
#3 Shingo Yamada が12年以上前に更新
- 担当者 を Maki Takahashi にセット
#4 Maki Takahashi が12年以上前に更新
- ステータス を New(新規) から Accepted(着手) に変更
#5 Maki Takahashi が12年以上前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 対象バージョン を 205 にセット
- 進捗率 を 0 から 50 に変更
https://github.com/martini2002jp/opDiaryPlugin/commit/86989de3a9846c5bcf5736bc43de09a84e6736d8 にて対応しました。
stable-3.6.xブランチおよびMasterブランチのOpenPNE3で、退会したユーザの日記コメントが削除されず
コメント者の情報欄には非SNSユーザー表示名設定が反映されることをPC版および携帯版にて確認しました。
#6 Maki Takahashi が12年以上前に更新
- 説明 を更新 (diff)
#7 Rimpei Ogawa が12年以上前に更新
- 対象バージョン を 205 から v1.4.0 に変更
#8 匿名ユーザー が12年以上前に更新
更新履歴 86989de3a9846c5bcf5736bc43de09a84e6736d8 で適用されました。
#9 Rimpei Ogawa が12年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
Pull request 取り込みました。レビューもOKです。
#11 Rimpei Ogawa が12年以上前に更新
- ステータス を Rejected(差し戻し) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
DB構造の変更が入っていますので、以下のコマンドを実行してから再度テストをお願いします。
$ ./symfony openpne:migrate --target=opDiaryPlugin --no-update-plugin
#12 Yuma Sakata が12年以上前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
テストOKです。