MySql5.7 以上版本在常會(huì)報(bào)關(guān)于 only_full_group_by 的錯(cuò)誤,sql 中 select 后面的字段必須出現(xiàn)在group by 后面,或者被聚合函數(shù)包裹,不然會(huì)拋錯(cuò)誤。
查看
進(jìn)入mysql 查看mysql版本:select version();
運(yùn)行SELECT @@GLOBAL.sql_mode;和SELECT @@SESSION.sql_mode;查看sql_model參數(shù),可以看到參數(shù)中有ONLY_FULL_GROUP_BY,
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
臨時(shí)去除ONLY_FULL_GROUP_BY
這種方式只是臨時(shí)去除:
set @@GLOBAL.sql_mode='';
set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';12
修改配置文件去除ONLY_FULL_GROUP_BY
這種方式是我實(shí)踐的方式,我詳細(xì)說(shuō)一下:
- 打開配置文件
mysql.cnf
sudo gedit /etc/mysql/mysql.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'
網(wǎng)上有很多資料寫到這段代碼在[mysql]中也同時(shí)添加,另外有些寫著添加內(nèi)容為 “set sql_mode XXXX”經(jīng)過(guò)我在自己機(jī)器上驗(yàn)證,發(fā)現(xiàn)都是不行的,只能在[mysqld]添加,否則會(huì)造成mysql無(wú)法連接
驗(yàn)證是否生效
重啟mysql
sudo service mysql restart1