mysql5.7版本因为sql_mode设置导致的问题以及解决

 更新时间:2024年09月06日 13:19:47   作者:一介白衣ing  
这篇文章主要介绍了mysql5.7版本因为sql_mode设置导致的问题以及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mysql5.7版本因为sql_mode设置导致的问题

因为重新安装了环境,想把之前的数据库导入到新库里面,

结果就报了如下错误: 

[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by”

尝试解决

方法一

登录mysql,设置sql_mode

use mysql;
set sql_mode=‘NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES';

然而并没有什么卵用

方法二

原来上边的设置方法只是会话级别的设置,真正让他生效得修改配置文件:

vi /etc/my.cnf

在[mysqld]配置项下面加上:

sql_mode=NO_UNSIGNED_SUBTRACTION,NO_ENGINE_SUBSTITUTION

重启服务,

再进入mysql

show variables like ‘sql_mode';

设置成功啦!!

关于sql_mode

官方文档:https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html

重要的几项配置简单介绍,更多详细介绍移步官方文档

  • NO_ENGINE_SUBSTITUTION 使用 ALTER TABLE或CREATE TABLE 指定 ENGINE 时, 需要的存储引擎被禁用或未编译,该如何处理。
  • 启用NO_ENGINE_SUBSTITUTION时,那么直接抛出错误;不设置此值时,CREATE用默认的存储引擎替代,ATLER不进行更改,并抛出一个 warning .
  • STRICT_TRANS_TABLES 设置它,表示启用严格模式。

注意: STRICT_TRANS_TABLES 不是几种策略的组合,单独指 INSERT、UPDATE出现少值或无效值该如何处理:

  • 例如:

如果我们建表的时候不严格,比如字段设置是NOT NULL,然而并没有给字段设置默认值,在插入语句的时候,这个字段我们忽略,没有赋值,恰好这个时候mysql的sql_mode是严格模式,即启用了STRICT_TRANS_TABLES,就会报字段没有默认值的错误。

或者说,我们将空字符串赋值给int类型的字段,在严格模式下也会报同样的错误。如果sql_mode没有配置STRICT_TRANS_TABLES则不会报错

ONLY_FULL_GROUP_BY 对于GROUP BY聚合操作,如果在SELECT中的列、HAVING或者ORDER BY子句的列,没有在GROUP BY中出现,那么这个SQL是不合法的。因为不在 group by 的列查出来展示会有矛盾。

  • 例如:
SELECT id from conf_merchant GROUP BY merchant_id;

这条sql在ONLY_FULL_GROUP_BY模式下就会报错。

1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘iapw.conf_merchant.market_id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

如果sql_mode 没有配置ONLY_FULL_GROUP_BY,就不会报错。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL8.0.18配置多主一从

    MySQL8.0.18配置多主一从

    主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点,本文详细的介绍了MySQL8.0.18配置多主一从,感兴趣的可以了解一下
    2021-06-06
  • MySQL CHAR和VARCHAR区别

    MySQL CHAR和VARCHAR区别

    本文主要介绍了MySQL CHAR和VARCHAR区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Node.js对MySQL数据库的增删改查实战记录

    Node.js对MySQL数据库的增删改查实战记录

    这篇文章主要给大家介绍了关于Node.js对MySQL数据库的增删改查的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作介绍的非常详细,需要的朋友可以参考下
    2021-10-10
  • mysql 发生系统错误1067的解决方法

    mysql 发生系统错误1067的解决方法

    今天要把WEB项目打包成EXE,可是在数据库上卡住了。在启动数据库服务的时候发生系统错误 1067。
    2009-09-09
  • 浅谈Mysql大数据分页查询解决方案

    浅谈Mysql大数据分页查询解决方案

    本文主要介绍了浅谈Mysql大数据分页查询解决方案,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • mysql迁移达梦列长度超出定义的简单解决方法

    mysql迁移达梦列长度超出定义的简单解决方法

    这篇文章主要介绍了mysql迁移达梦列长度超出定义解决方法的相关资料,,在达梦数据库中,字符串长度的存储方式与MySQL不同,导致迁移过程中出现数据长度不足的错误,解决方法包括在MySQL中将varchar类型修改为varchar(10char)以强制字符存储,需要的朋友可以参考下
    2024-12-12
  • 在idea中使用mysql数据库超详细教程

    在idea中使用mysql数据库超详细教程

    这篇文章主要介绍了如何在IntelliJ IDEA中连接MySQL数据库,并使用控制台执行SQL语句,还详细讲解了如何使用MyBatis Generator快速生成实体类、接口和SQL文件,以及如何解决Lombok依赖问题,需要的朋友可以参考下
    2025-02-02
  • 关于MySql的kill命令详解

    关于MySql的kill命令详解

    这篇文章主要介绍了关于MySql的kill命令详解,不知道你在使用 MySQL 的时候,有没有遇到过这样的现象:使用了 kill 命令,却没能断开这个连接,今天我们就来讲一讲这个问题,需要的朋友可以参考下
    2023-05-05
  • mysql怎么关闭sql_mode=ONLY_FULL_GROUP_BY模式

    mysql怎么关闭sql_mode=ONLY_FULL_GROUP_BY模式

    前段时间在项目开发过程中发现了系统异常,打开日志查看发现了如下的这个报错,查找相关资料终于解决了,这篇文章主要给大家介绍了关于mysql怎么关闭sql_mode=ONLY_FULL_GROUP_BY模式的相关资料,需要的朋友可以参考下
    2024-01-01
  • Mysql启动中 InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes 的问题

    Mysql启动中 InnoDB: Error: log file ./ib_logfile0 is of differe

    对于使用了默认 my.cnf(一般教程都会教你使用support-files/my-medium.cnf)的Mysql服务来说如果中间使用了innodb的话,innodb默认的log file大小是56M
    2011-05-05

最新评论