1. 程式人生 > >mysql 5.7版本groupby不可用

mysql 5.7版本groupby不可用

@mysql 5.7版本groupby不可用

mysql5.7預設不支援group by功能,如果不取消這個設定,寫出來的sql嚴格遵守oracle得規範,但是很麻煩,而且以前專案sql要重寫,所以需要修改引數.

報錯:
LECT list is not in GROUP BY clause and contains nonaggregated column ‘database_tl.emp.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
實際是就是所有查詢得欄位名需要在group by裡包含,否則不通過.

修改步驟(linux環境)
1,找到mysql配置檔案,這裡5.7和別的也不一樣,不在/etc/my.cnf,沒這個配置檔案,在/etc/mysql/mysql.conf.d 下的mysqld.cnf
2,新增一行

sql_mode        = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

這樣,之前專案中groupby 語句就可以使用了

以下為第二種設定方法
1,檢查mysql資料庫是否可以使用group by得方法

mysql> SELECT @@GLOBAL.sql_mode;

結果

+-------------------------------------------------------------------------------------------------------------------------------------------+

| @@GLOBAL.sql_mode                                                                                                                         |

+-------------------------------------------------------------------------------------------------------------------------------------------+

| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |

+-------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

2,設定為空

mysql> set @@GLOBAL.sql_mode='';