プロジェクト

全般

プロフィール

Bug(バグ) #3074

Yuya Watanabe さんが12年以上前に更新

h3. 概要 

 2 系で退会したはずのメンバのコメントが 3 系で新規登録したメンバによって書かれたかのような処理が行われる. 

 h3. 再現方法 

 日記コメントの場合.他のデータも紐付く可能性があるが未調査. 

 # 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 によって書かれたことになっている 

 h3. 確認バージョン 

 バージョンアップ前: OpenPNE 2.14 
 バージョンアップ後: OpenPNE 3.6.3 

 CentOS 5.8 3.8 
 MySQL 5.0.95 

 h3. 原因 

 メンバのデータを表すテーブルの auto_increment の値が 2.14 のときのものと一致していないため,新規登録した場合に 2 系ですでに使われていた メンバID に数字が割り当てられてしまう. 

 <pre> 
 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) 

 </pre>

戻る