坑人的Mysql5.7 (默認不支持Group By語句)(轉)

部署項目時,項目啓動完畢。點擊有group by 查詢語句時出現錯誤,界面中沒有該有的數據。查詢log日誌發現錯誤mysql

 Expression #1 of SELECT 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 。。。。sql

因爲以前也沒有記錄,因此日誌信息在網上找了一個大體同樣的。this

緣由:spa

mysql 5.7 新特性:點擊打開連接 默認是不支持GroupBy 語句的。命令行

能夠進入mysql 命令行中使用日誌

mysql> SELECT @@GLOBAL.sql_mode;

進行查詢code

結果爲:blog

+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@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)
因此咱們須要作的就是將上面畫紅的屬性注掉。

這裏爲了以後全局,重啓以後也能生效,使用修改配置文件進行修改屬性部署

(1)將這個 @@GLOBAL.sql_mode 設置爲空it

mysql> set @@GLOBAL.sql_mode='';
Query OK, 0 rows affected, 1 warning (0.00 sec)

(2)打開配置文件,這裏mysql5.7 的配置文件很詭異,這裏個人配置文件的路徑爲:/etc/mysql/mysql.conf.d 下的mysqld.cnf

打開找到[mysqld]

加入屬性 

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 語句就能夠使用了

相關文章
相關標籤/搜索