mysql提示this is incompatible with sql_mode= ONLY_FULL_GROUP_BY 的解决方法
在mysql 5.7版本以上会出现这个问题,因为这个 ONLY_FULL_GROUP_BY 配置严格执行SQL92标准,为了语法兼容不报错,可以修改sql_mode的值。
查看sql_mode的值
mysql> select @@GLOBAL.sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@GLOBAL.sql_mode |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
设置减去 ONLY_FULL_GROUP_BY 的两种方式:
- 方法一:临时会话设置(请注意必须值含引号)
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';
- 方法二:配置永久设置(值无需引号)
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
文件地址:
Linux:/etc/my.cnf
(配置在mysqld
节点上,注意两边不需要引号)
Windows:\MySQL5.7.26\my.ini
(配置在mysqld
节点上)
方法一直接生效,方法二需要重启一下mysql服务:
Linux:/bin/systemctl restart mysqld.service
Windows:直接重启wamp或者phpstudy
如果mysql启动不起来,可能设置的sql_mode不对,记得是先select出来后去除:
select @@sql_mode;