您的当前位置:首页正文

关于mysql 使用GROUP BY 查询报错

2024-11-08 来源:个人技术集锦

 

关于mysql 使用GROUP BY 查询报错:

通过查询错误,常见的解决方式有两种

方式一.

打开navcat,

用sql查询:

select @@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

去掉ONLY_FULL_GROUP_BY,重新设置值。

set @@global.sql_mode 
=’STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;

 

解决方式二:

C:\Program Files\MySQL\MySQL Server 8.0

修改my.ini 文件:

[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

 但是,使用此方式后,通过命令启动mysql失败:

C:\Windows\system32>net start mysql
MySQL 服务正在启动 .
MySQL 服务无法启动。

原因是: 

MYSQL8以上已经取消了NO_AUTO_CREATE_USER,sql_mode中不能包含这个。

去掉后,启动成功:

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

再次查询sql_mode:

select @@GLOBAL.sql_mode;

STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

可以看到,改动已生效

 

参考

Top