因为在mysql5.7里面的配置有一个ONLY_FULL_GROUP_BY导致禁用了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';
这是设置MySQL的SQL模式,其中包含了以下参数的组合:
- STRICT_TRANS_TABLES:启用严格的事务模式,包括更严格的数据类型检查,禁止隐式转换数据类型,强制外键约束等。
- NO_ZERO_IN_DATE:禁止日期值中出现0值。
- NO_ZERO_DATE:禁止日期值为’0000-00-00’。
- ERROR_FOR_DIVISION_BY_ZERO:当除数为0时,返回错误而不是NULL。
- NO_AUTO_CREATE_USER:禁止在用户登录时自动创建用户。
- NO_ENGINE_SUBSTITUTION:如果指定的存储引擎不存在,则会出错而不是自动替换为默认的存储引擎。
然后再执行曾经报错的语句就会发现已经能完美运行了
如果是使用laravel框架 我们还需要在config/database.php配置中
把严格模式 strict 关掉
改为false就可以用