• ADADADADAD

    mysql异常ERROR 1055 (42000)说明[ mysql数据库 ]

    mysql数据库 时间:2024-12-25 09:57:02

    作者:文/会员上传

    简介:

    具体异常信息如下:ERROR1055(42000):Expression#1ofSELECTlistisnotinGROUPBYclauseandcontainsnonaggregatedcolumn'aaa.test.age'whichisnotfunctionallydependent

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    具体异常信息如下:

    ERROR1055(42000):Expression#1ofSELECTlistisnotinGROUPBYclauseandcontainsnonaggregatedcolumn'aaa.test.age'whichisnotfunctionallydependentoncolumnsinGROUPBYclause;thisisincompatiblewithsql_mode=only_full_group_by

    执行这样的SQL语句可重现异常 select age, name from test group by name

    mysql5.1,不报异常

    mysql5.5,不报异常

    mysql5.6,不报异常

    mysql5.7.22,报异常(具体从5.7哪个版本开始还没有确定下来,网上有人说5.7.5)

    mysql从5.7的某个版本开始调整了默认参数sql_mode值为:

    mysql>showvariableslike'sql_mode';+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+|Variable_name|Value|+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+|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|+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+1rowinset(0.00sec)mysql>

    其中ONLY_FULL_GROUP_BY就是影响了上面SQL语句是否报异常

    解决方法:

    1、改写SQL语句,毕竟上面的写法不是标准的SQL语句

    2、登陆mysql服务器,执行以下命令,在global与session级都修改

    mysql>setglobalsql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';mysql>setsessionsql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

    3、结合第2种方法,在my.cnf文件中,指定sql_mode的值:

    [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

    注:2与3结合可不用重启服务器,且即使重启配置也依然有效。

    mysql异常ERROR 1055 (42000)说明.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysql异常1055