时间:2021-07-01 10:21:17 帮助过:7人阅读
严格模式还影响日期中由零,零日期和零处理除法,结合ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE和NO_ZERO_IN_DATE模式。 有关详细信息,请参阅这些模式的说明。
服务器SQL模式
MySQL服务器可以在不同的SQL模式下运行,并且可以根据sql_mode系统变量的值对不同的客户端应用不同的模式。 DBA可以设置全局SQL模式以匹配站点服务器操作需求,每个应用程序可以根据自己的需要设置其会话SQL模式。
模式会影响MySQL支持的SQL语法以及数据验证检查的效果。 这使得在不同的环境中使用MySQL变得更容易,并且可以将MySQL与其他数据库服务器一起使用。
在使用InnoDB表时,请考虑innodb_strict_mode系统变量。 它为InnoDB表启用额外的错误检查。
最重要的sql_mode值可能是这些:
- ANSI
此模式更改语法和行为以更加符合标准SQL。 这是本节最后列出的特殊组合模式之一。
- STRICT_TRANS_TABLES
如果某个值无法插入到事务表中,请中止该语句。 对于非事务性表,如果该值出现在单行语句或多行语句的第一行中,则中止该语句。 更多细节在本节后面给出。
为事务性存储引擎启用严格的SQL模式,并在非事务性存储引擎可能的情况下启用。
- TRADITIONAL
使MySQL像“传统”的SQL数据库系统一样行事。 在将不正确的值插入列时,此模式的简单描述是“给出错误而不是警告”。
注意
一旦发现错误,INSERT或UPDATE将立即中止。 如果您使用的是非事务性存储引擎,则这可能不是您想要的,因为在错误之前进行的数据更改可能无法回滚,从而导致“部分完成”更新。
需要查看更多模式,请查询mysql官方手册https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html
本文出自 “coding” 博客,请务必保留此出处http://xtceetg.blog.51cto.com/5086648/1981530
服务器SQL模式--记一次工作中遇到的问题
标签:mysql 严格模式