操作
Bug(バグ) #3074
完了2 系で退会したメンバのデータが 3 系で新規登録したメンバに紐付いてしまう場合がある
ステータス:
Invalid(無効)
優先度:
High(高め)
担当者:
-
対象バージョン:
-
開始日:
2012-06-11
期日:
進捗率:
0%
予定工数:
3.6 で発生するか:
Yes (はい)
3.8 で発生するか:
Unknown (未調査)
説明
概要¶
2 系で退会したはずのメンバのコメントが 3 系で新規登録したメンバによって書かれたかのような処理が行われる.
再現方法¶
日記コメントの場合.他のデータも紐付く可能性があるが未調査.
- 2.14 をインストール
- 初期メンバ A を登録(SNS メンバ数 1)
- メンバ B を追加(SNS メンバ数 2)
- メンバ C を追加(SNS メンバ数 3)
- メンバ A で日記 d を書く
- 日記 d に対して メンバ C がコメント x を書く
- メンバ C が退会する(SNS メンバ数 2)
- 3.6.3 へアップグレード
- 日記 d を閲覧する -> コメント x のメンバが非表示であることを確認する
- メンバ D を追加(SNS メンバ数 3)
- 日記 d を閲覧する -> コメント x が メンバ D によって書かれたことになっている
確認バージョン¶
バージョンアップ前: OpenPNE 2.14
バージョンアップ後: OpenPNE 3.6.3
CentOS 5.8
MySQL 5.0.95
原因¶
メンバのデータを表すテーブルの auto_increment の値が 2.14 のときのものと一致していないため,新規登録した場合に 2 系ですでに使われていた メンバID に数字が割り当てられてしまう.
mysql> show table status where name = "c_member"; +----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+ | c_member | MyISAM | 10 | Dynamic | 2 | 64 | 128 | 281474976710655 | 3072 | 0 | 4 | 2012-06-11 01:28:50 | 2012-06-11 01:28:50 | NULL | utf8_general_ci | NULL | | | +----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+ 1 row in set (0.00 sec) mysql> show table status where name = "member"; +--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+----------------------------------------------------------------------------------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+----------------------------------------------------------------------------------+ | member | InnoDB | 10 | Compact | 2 | 8192 | 16384 | 0 | 32768 | 0 | 3 | 2012-06-11 01:28:50 | NULL | NULL | utf8_unicode_ci | NULL | | Saves informations of members; InnoDB free: 1845248 kB; (`invite_member_id`) REF | +--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+----------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
操作