Project

General

Profile

Actions

Bug(バグ) #4151

open

OpenPNE 3 - Task(タスク) #4033: MySQLのStrict Modeを有効にした場合に生じる問題を調査

MySQLのONLY_FULL_GROUP_BYが有効な状態で「日記コメント記入履歴」ガジェットを表示するとエラー

Added by Youichi Kimura almost 8 years ago.

Status:
New(新規)
Priority:
Normal(通常)
Assignee:
-
Target version:
-
Start date:
2017-02-16
Due date:
% Done:

0%

Estimated time:
3.6 で発生するか:
Unknown (未調査)
[QA]バグ通知済:
No
3.8 で発生するか:
Unknown (未調査)

Description

Overview (現象)

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

「日記コメント記入履歴」ガジェットを追加した状態でホーム画面を開くと下記のエラーが発生する:

SQLSTATE[HY000]: General error: 3065 Expression #1 of ORDER BY clause is not in SELECT list, references column 'openpne.d3.last_comment_time' which is not in SELECT list; this is incompatible with DISTINCT

Causes (原因)

SELECT DISTINCT d3.diary_id
  FROM diary_comment_update d3
 INNER JOIN diary d4 ON d3.diary_id = d4.id
  LEFT JOIN member m3 ON d4.member_id = m3.id
  LEFT JOIN member_relationship m4 ON m3.id = m4.member_id_to AND (m4.member_id_from = '1')
 WHERE d3.member_id = '1'
   AND (
     d4.public_flag = '4' OR
     d4.public_flag = '1' OR
     (d4.public_flag = '2' AND m4.is_friend = 1)
   )
   AND (m3.is_active = '1' OR m3.is_active IS NULL)
 ORDER BY d3.last_comment_time DESC
 LIMIT 5

上記のクエリで、ORDER BY で使用するカラムが DISTINCT の対象に含まれていないためにエラーが発生している。

Way to fix (修正内容)

修正内容を記入

Actions #1

Updated by Youichi Kimura almost 8 years ago

  • Copied to Bug(バグ) #4161: MySQLのSTRICT_TRANS_TABLESが有効な状態でテスト用fixtureのロードに失敗する added
Actions #2

Updated by Youichi Kimura almost 8 years ago

  • Copied to deleted (Bug(バグ) #4161: MySQLのSTRICT_TRANS_TABLESが有効な状態でテスト用fixtureのロードに失敗する)
Actions

Also available in: Atom PDF