【Laravel】GROUP_BYでSQLSTATE[42000]: Syntax error or access violation: 1055 Expression

LaravelでgroupBy追加後、SQLSTATE[42000]: Syntax error or access violation: 1055 Expressionエラーが発生。対処法をまとめておきます。

実行環境

  • CentOS:7.5
  • mysql:5.7.23
  • Laravel:5.7.6

Syntax error or access violation: 1055 Expression発生

LaravelクエリビルダでGROUP_BY追加後、以下のエラーが発生。

こちらの記事を参考にして、my.cnfに以下の設定を追加。

/etc/my.cnf

 

MySQLを再起動。

うーん…。エラー変わらず。

 

Syntax error or access violation: 1055 Expressionを解消する方法

というわけでこちらを参考にdatabase.phpを修正。

/config/database.php

以下の’strict’をtrueからfalseに修正します。

すると無事にエラーが解消されました。

ただstrictモードを無効にすることはあまり良くないよう。バージョン5.7以降のMySQLサーバを使用していることが原因みたいです。

このバージョンからは、GROUP BYSQL99に準拠するように動作するため、やはりMySQLサーバの設定を変更することが推奨されているみたい。