MySQL中varchar(1)的解读(辟谣)
网上有如下错误解读:
在mysql中,varchar(n)和char(n)表示n个字符。不管是中文还是英文,MySQL都可以存储n个字符,只是实际字节长度不同
也就是说,MySQL不会对超长字符报错,而是直接截断。char(2)和varchar(2)都可以存储两个汉字或两个英文字符。
正确解读:
截断问题的解读:
具体代码示例如下(版本MySQL5.5):
mysql> create table test1(name varchar(1));
Query OK, 0 rows affected (0.66 sec)
mysql> insert into test1(name)values('t');
Query OK, 1 row affected (0.73 sec)
mysql> insert into test1(name) values('你');
ERROR 1406 (22001): Data too long for column 'name' at row 1
mysql> create table test2(name varchar(2));
Query OK, 0 rows affected (0.96 sec)
mysql> insert into test2(name) values('你');
Query OK, 1 row affected (0.16 sec)
mysql> insert into test2(name) values('中秋');
ERROR 1406 (22001): Data too long for column 'name' at row 1