用docker部署mysql5.7以后,发现代码里面有些语句执行会报错,主要集中在
1.在执行group by时会提示以下错误:
incompatible with sql_mode=only_full_group_by
主要原因是:在sql执行时,出现该原因,简单来说就是:
由于开启了ONLY_FULL_GROUP_BY的设置,如果select 的字段不在 group by 中,
并且select 的字段未使用聚合函数(SUM,AVG,MAX,MIN等)的话,那么这条sql查询是被mysql认为非法的,会报错误
2.在执行insert语句时,如果数据表有非空字段,但是insert语句里没有明文赋值,那么会报以下错误
Field **** doesn't have a default value
这是因为mysql默认执行了严格模式,完美的方法当然是sql语句要规范,但是为了之前开发的代码能够尽快的复用,所以暂时只能修改mysql配置
临时办法,在mysql重启后失效:
执行下面语句,再新创建数据库时会生效,但已有的不会生效:
SET @@global.sql_mode ='NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
在每个已有数据库下面执行:
SET sql_mode ='NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
如果要mysql重启后也生效,需要在my.ini里面增加上面的语句



