首页
学习
活动
专区
工具
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

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

MySQL案例:sql_mode详解

sql_mode详解 sql_mode,会直接影响SQL语法支持和数据校验,它包含非常多的选项,其中5.7版本的默认值是“ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE...最重要的选项 sql_mode最重要的选项,包括以下3个: (1)ANSI:该选项决定SQL语法支持,设置为ANSI,会更加遵守标准SQL语法。...总结 通过上面的学习,相信大家对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进行严格审核设置,同时对开发代码进行规范化管理

1.2K60

mysql 5.7 sql_mode设置问题

问题说明 在mysql较低版本中,对SQL语句并没有严格的限制检查,在5.7及以上版本开启严格模式,在插入数据的时候,如果字段没有设置默认值,则会报类似于这样的错误:“Field ‘title’ doesn...解决方法 1、查看sql_mode select @@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 2、修改 my.ini(Windows平台)或my.cnf(Linux平台) sql_mode...NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' 在sql_mode...中去掉only_full_group_by 3、如果还是不成功,可以设置为 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

1K21

查看sql_mode_mysql命令行执行sql脚本

1,执行SQL查看 select @@session.sql_mode; 全局级别: 查看 select @@global.sql_mode; 2,修改 set @@session.sql_mode='...xx_mode' set session sql_mode='xx_mode' 全局级别:修改 set global sql_mode='xx_mode'; set @@global.sql_mode=...'xx_mode'; session均可省略,默认session,仅对当前会话有效 全局修改的话,需高级权限,仅对下次连接生效,不影响当前会话,且MySQL重启后失效,因为MySQL重启时会重新读取配置文件里对应值...vi /etc/my.cnf [mysqld] sql-mode = "xx_mode" 保存退出,重启服务器,即可永久生效 sql_mode常用值如下: ONLY_FULL_GROUP_BY 对于GROUP...BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中 NO_AUTO_VALUE_ON_ZERO 该值影响自增长列的插入。

2.1K20

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=

61130

报错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,

18130

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
领券