返回顶部
首页 > 资讯 > 数据库 >怎么修改MySQL的SQL_MODE
  • 324
分享到

怎么修改MySQL的SQL_MODE

2024-04-02 19:04:59 324人浏览 泡泡鱼
摘要

这篇文章主要讲解了“怎么修改Mysql的sql_MODE”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么修改mysql的SQL_MODE”吧!查看我们当前

这篇文章主要讲解了“怎么修改Mysqlsql_MODE”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么修改mysql的SQL_MODE”吧!

查看我们当前数据库的sql_mode

mysql> select @@sql_mode;

+-----------------------------------------------------------------------------------------------------------------------+

| @@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 |

+-----------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

不同版本默认的SQL_MODE

MySQL 5.5:空

MySQL 5.6:非严格模式

NO_ENGINE_SUBSTITUTION

MySQL 5.7:严格模式

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

MySQL 8.0:严格模式

ONLY_FULL_GROUP_BY,

STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,

NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

如何修改SQL_MODE

SQL_MODE既可在全局级别修改,又可在会话级别修改。可指定多个MODE,MODE之间用逗号隔开。

全局级别

set global sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES';

会话级别

set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES';

SQL_MODE的完整列表

ALLOW_INVALID_DATES

在严格模式下,对于日期的检测较为严格,其必须有效。若开启该MODE,对于month和day的检测会相对宽松。其中,month只需在1~12之间,day只需在1~31之间,而不管其是否有效,如下面的'2004-02-31'

ERROR_FOR_DIVISION_BY_ZERO

该MODE决定除数为0的处理逻辑,实际效果还取决于是否开启严格模式。

1. 开启严格模式,且开启该MODE,插入1/0,会直接报错。

2. 只开启严格模式,不开启该MODE,允许1/0的插入,且不提示warning,1/0最后会转化为NULL。

3. 不开启严格模式,只开启该MODE,允许1/0的插入,但提示warning。

4. 不开启严格模式,也不开启该MODE,允许1/0的插入,且不提示warning,同2一样。

NO_ENGINE_SUBSTITUTION

在开启该MODE的情况下,在创建表时,如果指定的存储引擎不存在或不支持,则会直接提示“ERROR”。

若不开启,则只会提示“Warning”,且使用默认的存储引擎。

NO_ZERO_DATE

该MODE会影响'0000-00-00'的插入。实际效果还取决于是否开启严格模式。

1. 在开启严格模式,且同时开启该MODE,是不允许'0000-00-00'插入的。

2. 只开启严格模式,不开启该MODE,允许'0000-00-00'值的插入,且不提示warning。

3. 不开启严格模式,只开启该MODE,允许'0000-00-00'值的插入,但提示warning。

4. 不开启严格模式,也不开启该MODE,允许'0000-00-00'值的插入,且不提示warning。

NO_ZERO_IN_DATE

同NO_ZERO_DATE类似,只不过NO_ZERO_DATE针对的是'0000-00-00',而NO_ZERO_IN_DATE针对的是年不为0,但月或者日为0的日期,如,'2010-00-01' or '2010-01-00'。

ONLY_FULL_GROUP_BY

开启该MODE,则SELECT列表中只能出现分组列和聚合函数。

STRICT_ALL_TABLES

对所有表开启严格模式。

STRICT_TRANS_TABLES

事务表开启严格模式。

NO_AUTO_CREATE_USER

在MySQL 8.0之前,直接授权会隐式创建用户。

在MySQL 8.0中,已不允许grant语句隐式创建用户,所以,该MODE在8.0中也不存在。

其实,该MODE禁止的只是不带“identified by”子句的grant语句,对于带有“identified by”子句的grant语句,其并不会禁止。

SQL_MODE的常见组合

在MySQL 5.7中,还可将SQL_MODE设置为ANSI, DB2, MAXDB, MSSQL, MYSQL323, MYSQL40, oracle, postgresql, TRADITIONAL。

其实,这些MODE只是上述MODE的一种组合,目的是为了和其它数据库兼容。

在MySQL 8.0中,只支持ANSI和TRADITIONAL这两种组合。

ANSI:等同于

REAL_AS_FLOAT, PIPES_AS_CONCAT,ANSI_QUOTES, IGNORE_SPACE,ONLY_FULL_GROUP_BY

TRADITIONAL:等同于

STRICT_TRANS_TABLES, STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION。

范例:

mysql> set session sql_mode='TRADITIONAL';

Query OK, 0 rows affected (0.00 sec)

mysql> show session variables like 'sql_mode';

+---------------+------------------------------------------------------------------------------------------------------+

| Variable_name | Value |

+---------------+------------------------------------------------------------------------------------------------------+

| sql_mode | STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_ENGINE_SUBSTITUTION |

+---------------+------------------------------------------------------------------------------------------------------+

1 row in set (0.01 sec)

感谢各位的阅读,以上就是“怎么修改MySQL的SQL_MODE”的内容了,经过本文的学习后,相信大家对怎么修改MySQL的SQL_MODE这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: 怎么修改MySQL的SQL_MODE

本文链接: https://lsjlt.com/news/63080.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么修改MySQL的SQL_MODE
    这篇文章主要讲解了“怎么修改MySQL的SQL_MODE”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么修改MySQL的SQL_MODE”吧!查看我们当前...
    99+
    2024-04-02
  • MySQL中sql_mode修改不生效怎么办
    小编给大家分享一下MySQL中sql_mode修改不生效怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!场景模拟基于业务敏感性的考虑,下面涉及的表、存储过程等...
    99+
    2023-06-14
  • mysql修改sql_mode报错的解决
    目录一 ERR 1067引发的血案二 问题的源头sql_mode三 设置sql_mode一 ERR 1067引发的血案      &...
    99+
    2024-04-02
  • MySQL sql_mode修改不生效的原因及解决
    前言 近期多次聊到sql_mode的话题,也是多次遇到相关问题,今天就趁热打铁,再给大家带来一个sql_mode的案例分享。 场景模拟 基于业务敏感性的考虑,下面涉及的表、存储过程等均非真实数据,但并不影响排查过...
    99+
    2022-05-25
    MySQL sql_mode MySQL sql_mode修改不生效
  • mysql中怎么设置sql_mode
    这篇文章给大家介绍mysql中怎么设置sql_mode,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MySQL的sql_mode合理设置 sql_mode是个很容易被忽视的变量,默认...
    99+
    2024-04-02
  • mysql中怎么设置sql_mode值
    本篇文章为大家展示了mysql中怎么设置sql_mode值,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。sql_mode常用值如下: ONLY_FULL_...
    99+
    2024-04-02
  • sql_mode怎么在MySQL中使用
    这篇文章将为大家详细讲解有关sql_mode怎么在MySQL中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。sql_mode详解sql_mode,会直接影响SQL语法支持和数据校验,它包...
    99+
    2023-06-15
  • MySQL管理之道-笔记-MySQL5.7 sql_mode的改变
    MySQL 5.7 sql_mode的改变1、默认启用STRICT_TRANS_TABLES严格模式,该模式为严格模式,对数据会作严格的校验,错误数据不能插入报错,并且事物回滚。2、MySQL5.6默认SQ...
    99+
    2024-04-02
  • MySQL中SQL_MODE的使用
    这篇文章将为大家详细讲解有关MySQL中SQL_MODE的使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。SQL_MODE是MySQL中的一个系统变量(variable...
    99+
    2024-04-02
  • 怎么修改mysql的密码
    这篇文章将为大家详细讲解有关怎么修改mysql的密码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。怎么修改mysql的密码登录数据库,利用set password命令进行...
    99+
    2024-04-02
  • MySQL的密码怎么修改
    这篇文章主要讲解了“MySQL的密码怎么修改”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL的密码怎么修改”吧!摘要:本文介绍了如何修改一个用户的密...
    99+
    2024-04-02
  • mysql怎么修改表的engine
    mysql中修改表engine的方法方法一:首先,在命令行中启动MySQL服务;sudo service mysql startMySQL服务启动后,输入用户名和密码登录MySQL;mysql -u&...
    99+
    2024-04-02
  • 怎么修改mysql的编码
    要修改 mysql 编码,首先确定当前编码,然后使用以下命令:数据库:alter database database_name default character set charset...
    99+
    2024-05-21
    mysql 数据丢失
  • mysql中sql_mode的作用是什么
    sql_mode是MySQL中的一个系统变量,用于控制MySQL对SQL语句的执行和处理的模式。它的作用主要有以下几个方面: 严...
    99+
    2024-04-09
    mysql
  • mysql中sql_mode的用法是什么
    在MySQL中,sql_mode是一个会话级别的变量,它用于控制MySQL对SQL语句的处理方式。sql_mode可以设置多个参数组...
    99+
    2024-04-09
    mysql
  • MySQL sql_mode的使用详解
    前言 相信看过上一篇文章《MySQL案例:一个数据丢失惨案》的童鞋,都应该意识到,sql_mode是一个非常关键的配置,接下来就带来该配置项的详细解析。 sql_mode详解 sql_mode,会直接影响SQL语...
    99+
    2022-05-19
    MySQL sql_mode MySQL sql_mode的使用
  • 怎么修改mysql的端口号
    怎么修改mysql的端口号?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。怎么修改mysql的端口号1.在mysql安装目录下找...
    99+
    2024-04-02
  • 怎么修改mysql的字符集
    今天就跟大家聊聊有关怎么修改mysql的字符集,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。怎么修改mysql的字符集1.在DOS窗口下运行 ...
    99+
    2024-04-02
  • 怎么修改MySQL的root密码
    本篇内容主要讲解“怎么修改MySQL的root密码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么修改MySQL的root密码”吧! ...
    99+
    2024-04-02
  • mysql的root密码怎么修改
    本篇内容介绍了“mysql的root密码怎么修改”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!mysql&...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作