mysql 5.7 报错:ERROR 1055 (42000):

在使用旧版本的mysql进行排序操作时,默认查询的字段是需要全部都在group by 子句中出现的,也就是说如下的sql语句是会报错的:

select * from sys_user group by id;

因为group by 子句,只出现了id字段,所以这条语句只有查询出id字段才不会报错,如:select id from sys_user group by id;

如果需要查询出多余的字段,则需要进行如下的配置:

解决方法:

1、登陆mysql服务器,执行以下两条命令,在global与session级都修改;

mysql> 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';

mysql> 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';

2、同时,在my.cnf文件的[mysqld]字段中,指定sql_mode的值:

 [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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。