查明是最后一个字符被截取了,但应用程序没有作任何截取的操作,尝试后发现是Mysql干的。
Mysql有一个SQL_MODE模式,一般情况下是空,你可以查询你的Mysql库是什么模式:
select @@sql_mode; ##我的是空
在这个情况下,当你插入一条记录时,当有字段超出长度,mysql自动作了截取后存入数据库(会给条警告的信息)。
一般情况下我们不允许这样(为什么有这种处理,很奇怪),设置sql_mode为严格模式:
mysql> set SQL_MODE='TRADITIONAL';
Query OK, 0 rows affected (0.00 sec)
mysql> select @@sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------+
| @@sql_mode |
+-------------------------------------------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER |
+-------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
后面再有超出长度的将报错!!!
没有评论:
发表评论