美文网首页
Mac上mysql 5.7 修改sql_mode ONLY_FU

Mac上mysql 5.7 修改sql_mode ONLY_FU

作者: 小马将过河 | 来源:发表于2020-10-27 20:04 被阅读0次

    ONLY_FULL_GROUP_BY是MySQL提供的一个sql_mode,通过这个sql_mode来提供SQL语句GROUP BY合法性的检查,在MySQL的sql_mode是非ONLY_FULL_GROUP_BY语义时。一条select语句,MySQL允许target list中输出的表达式是除聚集函数或group by column以外的表达式,这个表达式的值可能在经过group by操作后变成undefined。

    一般方式

    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 @@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';
    

    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';
    
    

    废话半天,但是其实同事和我本地这样设置都没有生效。

    大家都明白,工具里面修改一般是临时的,只有修改配置文件才是永久的,但是比如在同事电脑上参考好几种网络上的说法修改了/etc/my.cnf文件,也还是没有奏效。

    windows 在安装目录下的my.ini 文件
    Mac 或者Linux 在/ etc/my.cnf 下面应该是
    总之就是在个人mysql配置文件中修改。

    另一个方式

    最后没办法了,下面的命令却不小心达到了目的,特此记录一下。

    SET @@sql_mode=REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', '');  
    

    相关文章

      网友评论

          本文标题:Mac上mysql 5.7 修改sql_mode ONLY_FU

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