首先网上查了一下,是有解决方案的,主要原因是
MySQL 5.7.5和up实现了对功能依赖的检测。如果启用了only_full_group_by SQL模式(在默认情况下是这样),那么MySQL就会拒绝选择列表、条件或顺序列表引用的查询,这些查询将引用组中未命名的非聚合列,而不是在功能上依赖于它们。
简单说就是要修改MySQL的SQL模式配置,好的
然后修改命令是:
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'
//修改globalsql
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'
执行完这两句就可以,然而只是无脑执行操作了,没发现提示了error,执行多次无效发现原来是报了error
error:variable ‘sql_mode’ can’t be set to the value of ‘NO_AUTO_CREATE_USER’
字面意思大概就是sql_mode不能配置NO_AUTO_CREATE_USER,好嘛,再查,
原因找到了:
8.0以上已经取消了NO_AUTO_CREATE_USER这个关键字
那好吧,那就:
set session sql_mode= 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
//修改globalsql
set @@global.sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
删掉set的NO_AUTO_CREATE_USER执行就可以了