Mysql各版本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

详细说明
ONLY_FULL_GROUP_BY
对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中

STRICT_TRANS_TABLES
该选项针对事务性存储引擎生效,对于非事务性存储引擎无效,该选项表示开启strict sql模式。在strict sql模式下,在INSERT或者UPDATE语句中,插入或者更新了某个不符合规定的字段值,则会直接报错中断操作

NO_ZERO_IN_DATE
MySQL中插入的时间字段值,不允许日期和月份为零

NO_ZERO_DATE
MySQL中插入的时间字段值,不允许日期为零

ERROR_FOR_DIVISION_BY_ZERO
INSERT或者UPDATE语句中,如果数据被0除,则出现警告(非strict sql模式下)或者错误(strict sql模式下)。
当该选项关闭时,数字被0除,得到NULL且不会产生警告
当该选项开启且处于非strict sql模式下,数字被0除,得到NULL但是会产生警告
当该选项开启且处于strict sql模式下,数字被0除,产生错误且中断操作

NO_AUTO_CREATE_USER
之前版本中使用GRANT语法,如果用户不存在则会自动创建用户,该选项限制该功能

NO_ENGINE_SUBSTITUTION
在使用CREATE TABLE或者ALTER TABLE语法执行存储引擎的时候,如果设定的存储引擎被禁用或者未编译,会产生错误。


作者:旧旧的 <393210556@qq.com> 摈弃世俗浮躁,追求技术精湛
posted @ 2022-03-16 10:50  WidgetBox  阅读(162)  评论(0编辑  收藏  举报