【MySQL】mysql 5.7 sql_mode 参数解析
16lz
2021-01-22
mysql> select version();+------------+| version() |+------------+| 5.7.32-log |+------------+1 row in set (0.00 sec)mysql> select @@GLOBAL.sql_mode;+-------------------------------------------------------------------------------------------------------------------------------------------+| @@GLOBAL.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)ONLY_FULL_GROUP_BY对于使用 GROUP BY 进行查询的SQL,不允许 SELECT 部分出现 GROUP BY 中未出现的字段,也就是 SELECT 查询的字段必须是 GROUP BY 中出现的或者使用聚合函数的或者是具有唯一属性的。STRICT_TRANS_TABLES该选项针对事务性存储引擎生效,对于非事务性存储引擎无效,该选项表示开启strict sql模式。在strict sql模式下,在INSERT或者UPDATE语句中,插入或者更新了某个不符合规定的字段值,则会直接报错中断操作NO_ZERO_IN_DATEMySQL中插入的时间字段值,不允许日期和月份为零NO_ZERO_DATEMySQL中插入的时间字段值,不允许日期为零ERROR_FOR_DIVISION_BY_ZEROINSERT或者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语法执行存储引擎的时候,如果设定的存储引擎被禁用或者未编译,会产生错误。
更多相关文章
- 初始化 Java 数据字段(学习 Java 编程语言 033)
- pgsql 修改字段类型为json
- 使用jquery和ajax更新选项列表
- 使用jQuery验证的MVC Razor View不验证空字段
- 使用jQuery在AJAX调用中的url字段格式
- 如何将加载微调器图像添加到jquery选项卡中的每个选项卡?
- jqueryui autocomplete 插件 点击 显示选项设置方法
- 在没有重新设置源选项的情况下,使用x-editable更改select2的数据
- 可编辑的表格:jQuery+PHP实现实时编辑表格字段内容