首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL sql_mode

文章目录[隐藏] 说明 常用值说明 生产环境sql_mode推荐设置 说明 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。...而该列又是自增长的,那么这个选项就有用了 STRICT_TRANS_TABLES 在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制 NO_ZERO_IN_DATE 设置该值,mysql...如 果未给出该模式,那么数据被零除时MySQL返回NULL NO_AUTO_CREATE_USER 禁止GRANT创建密码为空的用户 NO_ENGINE_SUBSTITUTION 如果需要的存储引擎被禁用或未编译...生产环境sql_mode推荐设置 # 查询当前sql_mode select @@GLOBAL.sql_mode; 在my.cnf添加如下配置 # win [mysqld] ONLY_FULL_GROUP_BY...NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION 注意: NO_AUTO_CREATE_USER再MYSQL8.0

61020
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL案例:sql_mode详解

前言 相信看过上一篇文章《MySQL案例:一个数据丢失惨》的童鞋,都应该意识到,sql_mode是一个非常关键的配置,接下来就带来该配置项的详细解析。...总结 通过上面的学习,相信大家对sql_mode各选项,都有较为详细的了解;关于sql_mode如何设置,个人建议如下: (1)对于5.5/5.6版本,sql_mode建议参照5.7默认值进行设置; (...2)对于5.7版本,sql_mode保持默认值即可; (3)对于8.0版本,sql_mode也保持默认值即可。...sql_mode的设置,可以让MySQL非常灵活地运行在各种不同模式下,但与此同时也带来各种各样的风险;在MySQL广泛应用于各类重要系统的情况下,建议是要对sql_mode进行严格审核设置,同时对开发代码进行规范化管理...;其实这一点,也可以从官方默认值看出来,随着MySQL版本的迭代,sql_mode的设置也是越来越严格。

1.3K60

mysqlsql_mode模式

时不给这个字段赋值,比如下面这样: 表t_test(id,name)中id,name都不允许为空, insert into t_test(name) values('xxx') 必然报错,这是天经地义的事情,但是在mysql...中这是有可能成功,具体取决于sql_mode的设置 大概上讲,sql_mode可以分为二大类: 一类是所谓的宽松无敌模式(my.ini中sql_mode设置为空或仅NO_ENGINE_SUBSTITUTION...时不设置值也能成功,db在插入时,会自动给默认值,比如int会给0值,甚至可以把abc赋值给int型的字段(当然,db会自动忽略该值,变成默认值0) 另一类的是所谓的严格模式(具体有很多可选值),设置成严格模式后,mysql...最后,无耻的从网上抄一段贴在这里备份: 如果使用mysql,为了继续保留大家使用oracle的习惯,可以对mysqlsql_mode设置如下: 在my.cnf添加如下配置 [mysqld] sql_mode...NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI_QUOTES' 参考: http://www.2cto.com/database/201304/202192.html http://dev.mysql.com

1.1K60

MySQLMySQL配置中sql_mode的作用

MySQL配置中sql_mode的作用 不知道你有没有踫到过这种问题,在 MySQL8 默认的情况下,我们之前习惯的为 DateTime 类型指定的 0000-00-00 这种格式是无法插入或者修改数据的...其实这种情况就是 MySQL 模式设置的问题,也就是我们今天要讲的 sql_mode 这个参数属性的作用。...sql_mode 根据官网的解释,MySQL 服务器是可以在不同的 SQL 模式中运行的,这个模式会影响 MySQL 支持的 SQL 语法及其执行的数据验证检查。...并且,MySQL 可以将这些模式分别运用于不同的客户端,也就是说,它是有 SESSION 会话设置能力的一个系统变量。 如何查看当前系统的 sql_mode 呢?和查看系统变量是一样的。...默认情况下,MySQL8 的 sql_mode 就是这些内容。 设置 sql_mode 我们新建一个表,尝试一下日期相关的操作。

9610

MySQLsql_mode模式说明及设置

MySQLsql_mode合理设置 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。...如果使用mysql,为了继续保留大家使用oracle的习惯,可以对mysqlsql_mode设置如下: 在my.cnf添加如下配置 [mysqld] sql_mode='ONLY_FULL_GROUP_BY...和MySQL5.7默认的sql_mode模式参数是不一样的,5.6的mode是NO_ENGINE_SUBSTITUTION,其实表示的是一个空值,相当于没有什么模式设置,可以理解为宽松模式。...自行处理并接受了,这就是宽松模式的效果,其实在开发、测试、生产等环境中,我们应该采用的是严格模式,出现这种错误,应该报错才对,所以MySQL5.7版本就将sql_mode默认值改为了严格模式,并且我们即便是用的...此方法在当前服务中生效,重新MySQL服务后失效 方法三:在mysql的安装目录下,或my.cnf文件(windows系统是my.ini文件),新增 sql_mode = ONLY_FULL_GROUP_BY

1.9K30

MySQL案例:sql_mode修改不生效?

前言 近期多次聊到sql_mode的话题,也是多次遇到相关问题,今天就趁热打铁,再给大家带来一个sql_mode的案例分享。...(1)客户侧开发童鞋创建了一个存储过程,该存储过程没有严格遵守group by标准语法 session 1: mysql> delimiter // mysql> create procedure test_for_group_by...> delimiter ; (2)客户侧开发童鞋调用该存储过程,报错ERROR 1140;因为当时存储过程比较复杂,改造起来比较麻烦,所以客户侧选择修改sql_mode session 1: mysql...=only_full_group_by (3)客户侧修改完sql_mode,再次执行,发现仍然报错ERROR 1140 session 2: mysql> set global sql_mode='STRICT_TRANS_TABLES...> drop procedure test_for_group_by; Query OK, 0 rows affected (0.01 sec) mysql> delimiter // mysql>

3.1K131

MySQL系列之SQL_MODE学习笔记

最近在学习《MySQL技术内幕:SQL编程》并做了笔记,本博客是一篇笔记类型博客,分享出来,方便自己以后复习,也可以帮助其他人 SQL_MODEMySQL特有的一个属性,用途很广,可以通过设置属性来实现某些功能支持...# 全局的SQL_MODE SELECT @@global.sql_mode; # 当前会话的SQL_MODE SELECT @@session.sql_mode; SQL_Mode默认值是为空的...,对于SQL_mode的设置可以在mysql配置文件(my.ini或者my.cnf),或者直接通过命令设置 严格模式:是指将sql_mode设置为STRICT_TRANS_TABLES或者STRICT_ALL_TABLES...返回NULL值 HIGH_NOT_PRECEDENCE NOT:开启旧版本的表达式优先级,例如 Not a between b and c被解释为not (a between b and c),不过在MySQL...:等同于NO_FIELD_OPTIONS和HIGH_NOT_PRECEDENCE的组合 MYSQL40:等同于NO_FIELD_OPTIONS和HIGH_NOT_PRECEDENCE的组合 MAXDB:

67230

MySQL或者MariaDB里面sql_mode的设置详解

MySQL5.6的sql_mode是STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION MariaDB10.0.17的sql_mode是空的。...如果把sql_mode的值设置成后面的两个值(STRICT_TRANS_TABLES或者TRADITIONAL,也就是我们说的严格模式),那么当在列中插入或更新不正确的值时,mysql将会给出错误,并且放弃...全部sql_mode MySQL版本<=5.6.5 默认为空 可选值如下: 参数 含义及示例 ALLOW_INVALID_DATES 允许无效的日期插入到数据库(无效的日期插入时候会有warning,但仍能插入...> set sql_mode='';> create table t1 (`age` char(3)) DATADIRECTORY="/tmp" INDEX DIRECTORY="/tmp";说明:此时查看...="/tmp" INDEX DIRECTORY="/tmp";说明:此时查看 /tmp下面找不到相关的ibd表空间文件,表文件还是原来的datadir下面。

2.2K20

深入解析MySQLsql_mode实例分析

引言 在MySQL数据库管理中,sql_mode是一个非常重要但又容易被忽视的设置。它定义了MySQL应如何执行SQL查询,以及如何处理数据验证和错误。...本文将对一个常见的sql_mode配置进行详细的分析。 1. sql_mode简介 定义:sql_mode是一个MySQL系统变量,用于设置数据库操作的不同方面。...设置方法:可以在MySQL配置文件my.cnf中设置,也可以在运行时使用SET命令动态设置。 SET sql_mode = 'modes'; 2....示例配置解析 下面是一个具体的sql_mode配置: sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE...总结 通过这篇文章,我们应该对sql_mode有了更全面的了解,以及如何通过调整这些设置来优化我们的MySQL数据库实例。正确的sql_mode配置能显著提高数据的可靠性和查询的准确性

31330

【数据库】MySqlsql_mode模式说明

什么是严格模式mysql5.7+的版本中,sql_mode为严格模式。比如必须给字段默认值,更新数据的长度必须符合限制等。...sql_mode的常见设置ANSI模式 :宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报warning警告。...不同版本的Mysqlsql_mode默认值Mysql 5.6 :Default Value 为 NO_ENGINE_SUBSTITUTIONMysql 5.7 :Default Value 为 ONLY_FULL_GROUP_BY...IGNORE_SPACE :用于忽略mysql系统函数名与之后的括号之间的空格、列如:count () 通过设置ignore_space 这个sql_mode 就可以把空格给忽略变成count()NO_AUTO_CREATE_USER...mysql5.7默认启用这个模式,这个模式是指在mysql的select查询不能出现除group by语句字段之外的其余字段。

1.5K50

mysql查看版本sql_linux查看mysql版本

【使用命令行查看mysql版本-直接查看】:在命令行输入“mysql–version",按”Enter“键即可....【使用命令行查看mysql版本-mysql变量查看】:在命令行输入“mysql",按”Enter“进入mysql命令行模式,输入”showvariableslike’version’;“即可....【在wamp查看】:点击wampserver,选择”mysql“子目录”version“即可....status可以看到 1、使用-V参数首先我们想到的肯定就是查看版本号的参数命令,参数为-V(大写字母)或者–version使用方法:D:\xampp\mysql\bin>mysql-V或者D:\xampp...\mysql\bin> 查看mysql版本方法一:status;方法二:selectversion(); 一般情况下,mysql会默认提供多种存储引擎,你可以通过下面的查看:看你的mysql现在已提供什么存储引擎

21.2K10
领券