MySQL的sql_mode模式说明
warning:
这篇文章距离上次修改已过446天,其中的内容可能已经有所变动。
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';
评论已关闭