在linux下网管安装的mysql不知何故其sql-mode设置为'',这样导致在插入数据的时候,如果数据长度大于字段的长度则多余的部分会被自动截断。
下面表格说明了char和varchar之间的区别:
值 | CHAR(4) | 存储需求 | VARCHAR(4) | 存储需求 |
'' | ' ' | 4个字节 | '' | 1个字节 |
'ab' | 'ab ' | 4个字节 | 'ab ' | 3个字节 |
'abcd' | 'abcd' | 4个字节 | 'abcd' | 5个字节 |
'abcdefgh' | 'abcd' | 4个字节 | 'abcd' | 5个字节 |
一般情况下sql-mode应该设置为STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION