Mysql2::Error: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'sample_test.parent.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (ActiveRecord::StatementInvalid)
Mysql2::Error: SELECT リストの式 #1 が GROUP BY 節になく、GROUP BY 節の列に機能的に依存しない非集約列 'sample_test.parent.id' を含んでいます。
これは sql_mode=only_full_group_by (ActiveRecord::StatementInvalid) と互換性がありません。
出典 deepl
自分の訳
SELECTの表現リストはGROUP BY節はありません。そしてGROUP BY句において非集計のカラムparentテーブルのidはカラムの機能上の従属関係がないカラム'sample_test.parent.id'を含んでいます
これはsql_mode=only_full_group_byと両立し難い
Expression 表現(すること)、表われ、しるし、(言葉の)言い回し、語法、語句、辞句、(顔・目などの)表情、顔つき、表情豊かなこと
not in 不在にしております;席を外しております
functionally 機能上の
dependent 従属関係の、隷属的な、
incompatible 気性が合わない、相いれない、両立しがたい、(…と)両立しないで、矛盾して
出典 weblio
ql_mode=only_full_group_byとは?
MySQL は、関数従属性の検出を実装しています。 ONLY_FULL_GROUP_BY SQL モードが有効な場合 (デフォルト)、MySQL は、選択リスト、HAVING 条件または ORDER BY リストが GROUP BY 句で名前が付けられておらず、機能的に依存していない非集計カラムを参照するクエリーを拒否します。
選択リストの非集計 address カラムが GROUP BY 句で指定されていないため、ONLY_FULL_GROUP_BY が有効な場合、このクエリーは無効である可能性があります:
SELECT name, address, MAX(age) FROM t GROUP BY name;
このクエリーは、name が t の主キーであるか、一意の NOT NULL カラムである場合に有効です。 このような場合、MySQL は、選択されたカラムが機能的にグループ化カラムに依存していることを認識します。 たとえば、name が主キーの場合、各グループには主キーの値が 1 つのみであるため、その値によって address の値が決まります。 そのため、グループ内の address 値の選択にランダム性はなく、クエリーを拒否する必要はありません。
name が t の主キーまたは一意の NOT NULL カラムでない場合、クエリーは無効です。 この場合、関数従属性を推測できず、エラーが発生します:
mysql> SELECT name, address, MAX(age) FROM t GROUP BY name;
ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP
BY clause and contains nonaggregated column 'mydb.t.address' which
is not functionally dependent on columns in GROUP BY clause; this
is incompatible with sql_mode=only_full_group_by
感想
group byするときはselectにも列を含めなければならない。
あと英語がズタボロ