sql_mode的各模式介绍
💡
原文中文,约1100字,阅读约需3分钟。
📝
内容提要
MySQL的sql_mode模式影响数据插入和更新时的数据类型转换和错误处理,不同模式导致同样代码在不同环境报错。其中,ONLY_FULL_GROUP_BY模式要求GROUP BY语句必须包含所有非聚合的列,否则报错;NO_ZERO_IN_DATE和NO_ZERO_DATE模式不允许在日期或时间中使用零值和“0000-00-00”日期。其他模式还包括严格事务表模式、错误处理模式、用户创建模式、存储引擎替换模式和标识符引号模式。
🎯
关键要点
- MySQL的sql_mode模式影响数据插入和更新时的数据类型转换和错误处理。
- ONLY_FULL_GROUP_BY模式要求GROUP BY语句必须包含所有非聚合的列,否则报错。
- NO_ZERO_IN_DATE和NO_ZERO_DATE模式不允许在日期或时间中使用零值和'0000-00-00'日期。
- STRICT_TRANS_TABLES模式只适用于事务表,导致同样代码在不同环境报错。
- ERROR_FOR_DIVISION_BY_ZERO模式下,除数为零时会抛出错误,未启用则返回NULL。
- NO_AUTO_CREATE_USER模式下,创建新用户时不允许创建不存在的用户。
- NO_ENGINE_SUBSTITUTION模式下,如果指定的存储引擎不存在,则MySQL报错。
- 标识符引号模式下,双引号被视为标识符的引号,而不是字符串的引号。
- 启用空格忽略模式后,MySQL会忽略SQL语句中的空格以美化SQL语句。
➡️