MySql版本问题sql_mode=only_full_grou

作者: 程序员阿晨 | 来源:发表于2020-06-23 09:25 被阅读0次

1、查看sql_mode:select @@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

2、去掉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';

3、上面是改变了全局sql_mode,对于新建的数据库有效。对于已存在的数据库,则需要在对应的数据下执行:

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的配置文件,方法如下👇

4、最佳解决办法:
在my.cnf 里面设置:在sql_mode 中去掉only_full_group_by ([mysqld]下面添加这段)

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版本问题sql_mode=only_full_grou

    本文链接:https://www.haomeiwen.com/subject/jjjcfktx.html