1. 问题描述
Cause: java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'btc-cloud.t1.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by\n; bad SQL grammar []; nested exce
2. 开发环境
- Ubuntu22 环境
- Mysql8.0
3. 解决方法(详细步骤)
- 打开终端。
- 使用文本编辑器编辑MySQL的配置文件。您可以使用nano、vim或其他您喜欢的文本编辑器。以下是使用nano编辑器的示例命令:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
如果您使用的是vim,可以使用以下命令:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
- 在配置文件中找到[mysqld]部分。如果文件中没有这一部分,您需要手动添加它。
- 在[mysqld]部分下方添加以下行,以禁用ONLY_FULL_GROUP_BY模式:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
请注意,这行配置将ONLY_FULL_GROUP_BY
模式从SQL
模式中移除。确保只添加一个sql_mode
行,如果文件中已经有一个sql_mode
行,请相应地修改它。
- 保存并关闭文件。如果您使用的是
nano
,可以按Ctrl + O
来保存文件,然后按Enter
确认文件名,最后按Ctrl + X
退出。如果您使用的是vim
,可以按Esc键进入正常模式,然后输入:wq
并按Enter
保存并退出。 - 重启
MySQL
服务以应用更改:
sudo systemctl restart mysql.service
或者使用旧版的初始化系统(如果您的系统还在使用它):
sudo systemctl restart mysql
- 验证更改。您可以通过执行以下命令来检查SQL模式是否已更新:
sudo mysql -u root -p -e "SHOW VARIABLES LIKE 'sql_mode';"
输入MySQL的root密码后,您应该看到sql_mode的值不再包含ONLY_FULL_GROUP_BY。
亲测好使!