在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
本文探讨了Linux环境下MySQL的sql-mode配置问题,当该模式被设置为空时,会导致数据插入过程中超出字段长度的数据被自动截断的现象。此外,文章还对比了CHAR与VARCHAR两种类型在不同情况下的存储需求差异,并推荐了一般情况下较为合适的sql-mode设置。
844

被折叠的 条评论
为什么被折叠?



