MySQL的sql_mode模式说明
MySQL的sql_mode
定义了MySQL应如何处理SQL语句,影响语法和数据校验等。不同的sql_mode
可以影响SQL语法和数据校验等。
常见的sql_mode
包括:
STRICT_TRANS_TABLES
:对所有事务型表进行严格模式检查STRICT_ALL_TABLES
:对所有表进行严格模式检查NO_ZERO_IN_DATE
:在严格模式下,不允许日期和月份中有0NO_ZERO_DATE
:设置后,如果插入0日期,则会报错而非警告ERROR_FOR_DIVISION_BY_ZERO
:在严格模式下,整数除以0会报错而非警告NO_AUTO_CREATE_USER
:禁止GRANT创建密码为空的用户NO_ENGINE_SUBSTITUTION
:不允许选择默认存储引擎ONLY_FULL_GROUP_BY
:禁止不在GROUP BY子句中的列的SELECT查询
查看当前sql_mode
:
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;
设置sql_mode
:
SET GLOBAL sql_mode = 'modes';
SET SESSION sql_mode = 'modes';
其中modes
是以逗号分隔的sql_mode
列表。例如,设置为严格模式并禁止创建用户:
SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER';
评论已关闭