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,就不会报错。

总结

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

相关文章

  • MySQL分区表的正确使用方法

    MySQL分区表的正确使用方法

    这篇文章主要给大家介绍了关于MySQL分区表的正确使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • MySQL中关于临时表的一些基本使用方法

    MySQL中关于临时表的一些基本使用方法

    这篇文章主要介绍了MySQL中关于临时表的一些基本使用方法,是MySQL入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • mysql5.7.13 环境搭建教程(解压缩版)

    mysql5.7.13 环境搭建教程(解压缩版)

    这篇文章主要为大家详细介绍了mysql解压缩版环境搭建教程,具有一定的实用性,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 重置mysql的root密码最简单的方法

    重置mysql的root密码最简单的方法

    在本篇文章里小编给大家整理的是关于重置mysql的root密码最简单的方法,需要的朋友们参考下。
    2020-03-03
  • 深入理解Mysql中的MVCC

    深入理解Mysql中的MVCC

    这篇文章主要介绍了深入理解Mysql中的MVCC,同样的sql查询语句在一个事务 里多次执行查询结果相同,就算其它事务对数据有修改也不会影响当前事务sql语句的查询结果, 这个隔离性就是靠MVCC机制来保证的,需要的朋友可以参考下
    2023-09-09
  • 解决 phpmyadmin #2002 无法登录 MySQL 服务器

    解决 phpmyadmin #2002 无法登录 MySQL 服务器

    我以前使用phpmyadmin都是很正常的,从来没有出现过问题。但是今天出现了提示#2002无法登陆到MYSQL服务器
    2012-04-04
  • MySQL安装服务时提示:Install/Remove of the Service Denied解决

    MySQL安装服务时提示:Install/Remove of the Service Denied解决

    今天给新电脑安装了mysql,本来好好的,却报了个bug,就记录下吧,这篇文章主要给大家介绍了关于MySQL安装服务时提示:Install/Remove of the Service Denied的解决办法,需要的朋友可以参考下
    2023-03-03
  • MySQL数据库三种常用存储引擎特性对比

    MySQL数据库三种常用存储引擎特性对比

    MySQL中的数据用各种不同的技术存储在文件(或内存)中,这些技术中的每一种技术都使用不同的存储机制,索引技巧,锁定水平并且最终提供广泛的不同功能和能力。在MySQL中将这些不同的技术及配套的相关功能称为存储引擎。
    2016-01-01
  • 解析MySQL中存储时间日期类型的选择问题

    解析MySQL中存储时间日期类型的选择问题

    这篇文章主要介绍了解析MySQL中存储时间日期类型的选择问题,具有一定参考价值,需要的朋友可以了解。
    2017-10-10
  • Linux系统中MySQL的常用操作命令

    Linux系统中MySQL的常用操作命令

    本文给大家汇总介绍了下载Linux系统中操作mysql的一些常用的命令,非常实用,有需要的小伙伴可以参考下
    2018-02-02

最新评论