ETJava Beta | Java    注册   登录
  • sql_mode=only_full_group_by 异常解决

    发表于 2024-12-08 10:42:50     阅读(191)     博客类别:MySQL

    报错信息

    Caused by: java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'db_classroom.t_adminmenu.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
    	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) ~[mysql-connector-java-8.0.20.jar:8.0.20]
    	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.20.jar:8.0.20]
    	

    解决(临时)

    SELECT @@global.sql_mode
    
    # 查询到的数据赋值一份出来 然后去掉ONLY_FULL_GROUP_BY重新set回去即可
    SET @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

    解决(永久)

    永久解决这个问题主要是修改配置文件即可,这里以windows为例 首先要找到my.ini所在位置
    
    打开注册表(regedit) 找到KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MYSQL80
    
    

     

    找到后打开my.ini文件 在mysqld节点下添加 sql_mode=''