mysql的mode模式
作者:binmysql可以运行在不同的 SQL mode下
这里介绍2种常见的mode
你可以使用以下命令查看当前session的模式
select @@sql_model;
1、严格模式
set session sql_mode='STRICT_TRANS_TABLES';
在严格模式下,变量的长度,日期的合法性等都会被检查
应用场景:
一些不在严格模式下插入数据因为字段长度被截取部分,并且会提示一个wanrning
mysql> insert mode_test values(null,1111111111111111111113333); Query OK, 1 row affected, 1 warning (0.00 sec) mysql> select * from mode_test; | 1 | 11111111111111111111 |
如果在严格模式下,插入将不会成功,并且返回一个error;
ERROR 1406 (22001): Data too long for column 'name' at row 1
2、启用NO_BACKSLASH_ESCAPES
set session sql_mode= 'NO_BACKSLASH_ESCAPES';
在没有设置NO_BACKSLASH_ESCAPES时,插入数据中含有反斜杠”\”,会被转义
而设置了NO_BACKSLASH_ESCAPES时,插入数据反斜杠”\”,编不会被转义了;
3、ANSI、TRADITIONAL模式
在ANSI模式下输入非法日期,会变成”0000-00-00 00:00:00″,而在TRADITIONAL模式下,日期非法便无法输入了。