SQL Error (1055) sql_mode=only_full_group_by详解编程语言
2023-06-13 09:11:48 时间
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column aaa.test.age which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
mysql5.1,不报异常
mysql5.5,不报异常
mysql5.6,不报异常
mysql5.7,报异常
原因是因为mysql中对 group by 用法的规定。严格意义上说,就是用了group by之后。select 的字段只能是group by的字段,或者需要加聚合函数的。在 oracle 中,一直有这项约定。所以直接就会报错。但是mysql 直到 5.7 版本之后才把这个要求明确限制起来。
这种问题两种思路:
第一修改sql,按照规定的规范重写项目中所有有问题的sql。很明显代价太大。风险很高;不过还未开发时可以严格规范写法。
第二种那就是把这种限制去掉,让功能继续像5.7之前的样子一样能跑。已经完成的项目用这种,因为第一种代价太大。
1、改写SQL语句,毕竟上面的写法不是标准的SQL语句
2、登陆mysql服务器,执行以下命令,在global与session级都修改
mysql 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; mysql set session 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、结合第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结合可不用重启服务器,且即使重启配置也依然有效。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/17770.html
cjavamysqloracle相关文章
- 人工智能自动sql优化工具–SQLTuning for SQL Server
- mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法详解数据库
- python连接sql server数据库详解编程语言
- 优化设计提高sql类数据库的性能详解编程语言
- Oracle PL/SQL编程语法详解编程语言
- 将SQL语句合并为一行详解编程语言
- ibatis配置log4j输出sql语句等日志信息详解编程语言
- 两段简单的JS代码防止SQL注入详解编程语言
- springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用详解编程语言
- 文件MySQL如何批量导入SQL文件(mysql导入sql)
- Python3:sqlalchemy对sybase数据库操作,非sql语句详解编程语言
- django原生SQL语句查询与前端数据传递详解编程语言
- 程序新能优化-SQL优化详解编程语言
- SQL四种语言:DDL,DML,DCL,TCL详解编程语言
- Mybatis分页查询与动态SQL详解编程语言
- MySQL中常用的SQL语句(sql语句mysql)
- 使用MSSQL导入.SQL文件(mssql.sql文件)
- MongoDB导出SQL: 一种简单快捷的方式(mongodb导出sql)
- 用Oracle动态SQL轻松解决复杂问题(oracle动态sql)
- sql试用MSSQL空间:体验SQL带来的强大性能(mssql空间试用)
- 重新认识SQL:缤纷功能无需MSSQL(sql 没有mssql)
- Oracle解析引擎:揭示SQL真谛(oracle解析sql)
- 深入浅出:精通Oracle数据库SQL语句(oracle数据库sql语句)
- MySQL中SQL比较操作符及语法详解(mysql中sql比较)
- Oracle SQL编程从入门到精通(oracle sql-1)