1. sql_mode模式
mysql数据库的中有一个环境变量sql_mode,定义了mysql应该支持的sql语法,数据校验等!我们可以通过以下方式查看当前数据库使用的sql_mode:
- mysql> set @@sql_mode=TRADITIONAL;
- Query OK, 0 rows affected (0.00 sec)
- mysql> create table test(name varchar(4), pass varchar(4));
- Query OK, 0 rows affected (0.02 sec)
- mysql> insert into test values('aaaaa','aaaaa'),('bbbb','bbbb');
- ERROR 1406 (22001): Data too long for column 'name' at row 1
- mysql> show errors;
- +-------+------+------------------------------------------+
- | Level | Code | Message |
- +-------+------+------------------------------------------+
- | Error | 1406 | Data too long for column 'name' at row 1 |
- +-------+------+------------------------------------------+
- 1 row in set (0.00 sec)
- mysql> select * from test;
- Empty set (0.00 sec)
TRADITIONAL模式与STRICT_TRANS_TABLES模式执行的结果,在这种情况下一致。
注意:我们这里设置的sql_mode都是session级别的。另外,可以直接修改my.ini文件,找到sql_mode,然后设置新的模式即可!
例如:
vi /etc/my.cnf
在[mysqld]下面添加如下列:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES