系统:ubuntu 22.10
故障:项目是在mysql 5.7下写的sql语句,在ubuntu本地运行时提示only_full_group错误,无法正常显示。
原因:mysql 8.0版本默认开启了only_full_group_by的规则校验。
解决方案:
vi /etc/mysql/conf./mysql.cnf
在最后面插入以下:
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
在终端输入:
sudo chmod 664 /etc/mysql/conf.d/mysql.cnf
重启mysql:
service mysql restart
进入mysql测试:
select @@sql_mode
如果显示:
mysql> SELECT @@sql_mode;
+----------------------------------------------------------------------------------------------------+
| @@sql_mode |
+----------------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
则表示已经生效了。这时,打开出错的项目,运行,一切正常。大功告成。