1. 程式人生 > >laravel 5.4 報錯SQLSTATE[42000] Syntax error or access violation 1055 'xxx' isn't in GROUP BY

laravel 5.4 報錯SQLSTATE[42000] Syntax error or access violation 1055 'xxx' isn't in GROUP BY

查詢mysql 1055錯誤碼發現問題為在mysql的配置中如果設定了sql_mode包含ONLY_FULL_GROUP_BY值得話,在進行查詢時需要將select的欄位都包含在group by 中。
即 select x,y from xxx group by x,y
否則就會報錯

但是檢視自己的配置my.cnf發現在sql_mode中並沒有ONLY_FULL_GROUP_BY這個值

然後去檢視Laravel的配置檔案,config/database.php,查詢mysql的配置,

  1. 'mysql'=>[
  2. 'driver'=>'mysql',
  3. 'host'=> env('DB_HOST'
    ,'localhost'),
  4. 'port'=> env('DB_PORT','3306'),
  5. 'database'=> env('DB_DATABASE','forge'),
  6. 'username'=> env('DB_USERNAME','forge'),
  7. 'password'=> env('DB_PASSWORD',''),
  8. 'charset'=>'utf8',
  9. 'collation'=>'utf8_unicode_ci',
  10. 'prefix'=> env('DB_PREFIX',''),
  11. 'strict'=>true,
  12. 'engine'=>null,
  13. ],

發現有個strict項,預設為true,上網也沒有查詢到相關解釋,根據字面意思猜測可能為是否開啟嚴格模式,將其修改為false,再次測試發現問題解決,可以輸出正確結果