mysql [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause ...问题

在navicat中执行create table语句时报错:

[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

查看sql_mode;

SELECT @@SESSION.sql_mode;

结果:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

解决方案一:(未解决问题)

重新设置sql_mode

set SESSION sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ';
 

执行时报错

[Err] 1231 - Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'

8.0以上已经取消了NO_AUTO_CREATE_USER这个关键字,删掉sql语句中的这个关键字即可

改为:set SESSION sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION ';

执行成功。

但是重写创建表,仍旧报1055的错误。

重启mysql服务

以管理员的身份打开控制台窗口,输入 net stop mysql  停止mysql服务,再输入 net start mysql 启动服务。

发现之前修改的sql_mode值又变了回来,说明只是临时修改参数,不能把更改写到配置文件中,重启后恢复修改前的值。

解决方案二:

Windows操作系统中mysql配置文件是my.ini。

查看mysql安装目录:select @@basedir

在安装目录下找到my.ini文件,添加参数:sql_mode=sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

在修改my.ini文件时出现个小插曲,初始my.ini文件内容如下,不管在哪个位置添加sql_mode,都不成功。

[mysqld]
character-set-server=utf8mb4
bind-address=0.0.0.0
port=3306
default-storage-engine=INNODB 
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4

后来改为下面这种形式,就成功了。

[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
bind-address=0.0.0.0
port=3306
default-storage-engine=INNODB 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值