Data truncation: Data too long for column 'xxx' at row 1
对于 mysql 的 varchar 类型经常在插入或者更新的时候遇到这个错误,要想避免这个问题,需要对一些概念有所了解
-
varchar 后面数字表示允许插入的字符长度是多少,字符可以是中文、英文、符号等等,任何一个表示一个字符。所以 varchar(10)允许插入至多10个中文。
-
length() 函数表示的是字节的长度,一个字符换算成多少个字节是由该字段的字符编码所决定,所以已经不能再增加字符的字符串插入表字段后,使用length()函数显示的长度可能不一样,如果是 varchar(10) 就会出现 10 ~ 30之间的任何值
-
使用 JDBC 编程插入时也是用的字符,所以 varchar(10) 的字段理论上允许你插入10个中文字
-
插入测试
create table test_length (
cont varchar(10)
);
-- success
insert into test_length (cont) values ('我我喔喔喔喔喔喔我我');
insert into test_length (cont) values ('我我喔喔喔喔喔喔我@');
insert into test_length (cont) values ('222');
insert into test_length (cont) values ('1111111111');
-- failed
insert into test_length (cont) values ('我我喔喔喔喔喔喔我我1');
insert into test_length (cont) values ('11111111112');
- length函数
select length(cont) from test_length;
![](https://img.haomeiwen.com/i7398624/f8389b3680670172.png)
网友评论