mysql的char类型长度问题

img

img

img


为什么性别的长度在利用navicat和命令列界面的不一致,在命令列界面长度为1,而在navicat长度为4才可以

img

char 是定长字段,如果你已经有了数据,那么修改时,长度不能低于原有长度,比如性别,你原先定义长度是4,那么数据就是 '男 ',他会自动补上三个空格,那么再修改长度就会异常

在命令行界面你没有输入默认值吧
默认的是中文字符,那么你至少要能存放下一个中文字符才行呀

char的长度是以字节为单位的,‘男'是个中文字符占两个字节,所以你的数据库会报错,说非法默认值,因为你的设计方案是char(1)。
如果你想节约存储空间,性别可以使用Enum类型,这样的实际存储占用一个字节

男是两个字符;不是一个字符,英文字母,阿拉伯数字0-9都是一个字符,但是对于汉字来说是两个字符