プロジェクト

全般

プロフィール

Bug(バグ) #4157

Youichi Kimura さんがほぼ8年前に更新

h3. Overview (概要) 

 MySQL 5.7 の Strict Mode が有効な状態での動作確認 (#4033) を行った際に発生した。 

 送信済みメッセージの削除 (「ゴミ箱」への移動) を行うと下記のエラーが発生する: コミュニティ一覧のフィード (@/api.php/feeds/community@) を取得すると下記のエラーが発生する: 

 <pre> 
 SQLSTATE[HY000]: General error: 1364 Field 'message_send_list_id' doesn't have a default value 
 </pre> 

 受信メッセージの削除 (「ゴミ箱」への移動) を行うと下記のエラーが発生する: 

 <pre> 
 SQLSTATE[HY000]: General error: 1364 Field 'message_id' doesn't have a default value 
 </pre> 

 h3. Causes (原因) 

 h4. 送信済みメッセージの削除 

 <pre><code class="sql"> 
 INSERT INTO deleted_message (is_deleted, message_id, member_id, created_at, updated_at) VALUES ('0', '1', '1', '2017-02-16 21:12:14', '2017-02-16 21:12:14') SELECT DISTINCT c3.id 
   FROM community c3 
   LEFT JOIN community_member c4 ON c3.id = c4.community_id 
  GROUP BY c4.community_id 
  ORDER BY c3.created_at DESC 
  LIMIT 25 
 </code></pre> 

 上記のクエリで、NOT NULL 制約のある message_send_list_id に値がセットされていないことが原因。 

 h4. 受信メッセージの削除 

 <pre> 
 INSERT INTO deleted_message (is_deleted, message_send_list_id, member_id, created_at, updated_at) VALUES ('0', '1', '2', '2017-02-16 21:18:43', '2017-02-16 21:18:43') 
 </pre> 

 上記のクエリで、NOT NULL 制約のある message_id に値がセットされていないことが原因。 上記のクエリで、@c3.id@ が GROUP BY に含まれていないためエラーが発生している。 

 h3. Way to fix (修正内容) 

 修正内容を記入

戻る