首页
学习
活动
专区
工具
TVP
发布

MySQL sql_mode

文章目录[隐藏] 说明 常用值说明 生产环境sql_mode推荐设置 说明 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。...视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似 ANSI_QUOTES 启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符 Oracle数据库的sql_mode...生产环境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_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION linux 严格模式 sql_mode...NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION linux 宽松模式 sql_mode

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

MySQL案例:sql_mode详解

sql_mode详解 sql_mode,会直接影响SQL语法支持和数据校验,它包含非常多的选项,其中5.7版本的默认值是“ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE...总结 通过上面的学习,相信大家对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.2K60

MySQL的sql_mode模式说明及设置

MySQL的sql_mode合理设置 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。...sql_mode常用值如下: ONLY_FULL_GROUP_BY: 对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP...如果使用mysql,为了继续保留大家使用oracle的习惯,可以对mysql的sql_mode设置如下: 在my.cnf添加如下配置 [mysqld] sql_mode='ONLY_FULL_GROUP_BY...模式设置和修改(以解决上述问题为例): 方式一:先执行select @@sql_mode,复制查询出来的值并将其中的NO_ZERO_IN_DATE,NO_ZERO_DATE删除,然后执行set sql_mode...= '修改后的值'或者set session sql_mode='修改后的值';,例如:set session sql_mode='STRICT_TRANS_TABLES';改为严格模式 此方法只在当前会话中生效

1.7K30

sql_mode之only_full_group_by

sql_mode之only_full_group_by 今天上班的时候,业务方问了我这样一个问题:能不能把线上的sql_mode值改为和测试环境一致?...因为我们在测试环境上写的sql在线上可能会出错,原因是线上的环境设置了sql_mode=only_full_group_by。...相当于还是以前的,要使他生效,需要重新连接进来,也就是使用新会话,否则不会生效,而我们使用了set session之后,当前回话的sql_mode就直接被改掉了。...经过我们上面这么多实验,可以得到下面的结论: 1、当我们的sql_mode使用了only_full_group_by的时候,如果要想实现select的字段和group by的字段数量不相同而查询语句不出错...2、当我们去掉sql_mode的only_full_group_by的时候,之所以前后字段数量不一致还能查询成功,实际上是mysql为我们进行了补齐。

3.6K31

MySQL系列之SQL_MODE学习笔记

最近在学习《MySQL技术内幕:SQL编程》并做了笔记,本博客是一篇笔记类型博客,分享出来,方便自己以后复习,也可以帮助其他人 SQL_MODE:MySQL特有的一个属性,用途很广,可以通过设置属性来实现某些功能支持...# 全局的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值写到非空要求的字段里,或者写入不合法的日期数据,比如’2019-09-40’ SET GLOBAL sql_mode ='STRICT_TRANS_TABLES...'; SET GLOBAL sql_mode ='STRICT_ALL_TABLES'; 数据原本有数据的情况,就不要直接set,用concat连接起来: set @@session.sql_mode=

62630

报错sql_mode=only_full_group_by

GROUP BY,expression #1of SELECT list contains nonaggregated column's.type';this is incompatible with sql_mode...GROUP BY,expression #1of SELECT list contains nonaggregated column's.type';this is incompatible with sql_mode...中即可 「禁用only_full_group_by模式:」 如果你确定查询的逻辑和数据不会引起问题,可以在查询之前执行以下命令来临时禁用only_full_group_by模式: SET SESSION sql_mode...,那就需要写到cnf或ini配置中 mysql中配置文件地址一般是C:\Program Files\MySQL\MySQL Server 5.7\bin\my.ini 我的在这里额 查询已经有的sql_mode...select @@sql_mode 在ini中添加查询出来的模式配置,然后去掉only_full_group_by模式即可 [mysqld] sql_mode=STRICT_TRANS_TABLES,

18630

深入解析MySQL的sql_mode实例分析

引言 在MySQL数据库管理中,sql_mode是一个非常重要但又容易被忽视的设置。它定义了MySQL应如何执行SQL查询,以及如何处理数据验证和错误。...本文将对一个常见的sql_mode配置进行详细的分析。 1. sql_mode简介 定义:sql_mode是一个MySQL系统变量,用于设置数据库操作的不同方面。...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配置能显著提高数据的可靠性和查询的准确性

22630
领券