项目启动报了一个错:

which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

翻译过来就是:mysql中group by 后面的字段必须在前面的查询中 用到

因为mysql 5.7.28的版本 默认是开启 only_full_group_by

此时需要做的是:
use mysql; (选择mysql数据库)
select @@sql_mode; 查询sql模式
image.png
如果有only_full_group_by则删除之:

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

再重新查询一次:
select @@sql_mode;

此时会发现only_full_group_by字段已经被删除了

重启应用删除缓存 会发现之前的错误荡然无存了

mysql 貌似不能重启 重启会重新初始化貌似 大家试试

mysql5.7版本中 没有在安装目录下生成my.ini文件 需要自己创建;

image.png

其中内容如下:
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]
# 设置mysql客户端默认字符集

default-character-set=utf8

[mysqld]

#设置3306端口

port = 3306
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的安装目录

basedir=D:\Environments\MySQLServer5.7
datadir=D:\Environments\MySQLServer5.7\Data

# 允许最大连接数

max_connections=200

# 服务端使用的字符集默认为8比特编码的latin1字符集

character-set-server=utf8

# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

对号入座,其他设置可以参考这里

https://www.cnblogs.com/q1490...


docker
681 声望55 粉丝

十三学得java成,名属company第一部