比如 varchar(100) 这种 看到教程都是 name:string 然后数据库默认都是 255 的
varchar(100) 和 varchar(255) 在 mysql 内的存储数据类型是没有区别的,100 和 255 是用来告诉 client 显示的时候宽度多少。同理 int(10), int(1) 都是没有区别的。
#1 楼 @kevinxu 酱紫 谢谢
#1 楼 @kevinxu 长见识了,还真不知道这个。
:), 还有一个需要注意的是 id 字段 rails 默认是 int,如果将来表巨大还是考虑用 unsigned int 或者 big int。之前遇到一次 id 自增到 2B+,结果没有空间了,后来花了几天把 int 转成 bigint,真是很痛苦 ~~
t.string :name, limit: 2000, unique: true, default: "hello world"
t.column :field, 'integer unsigned'
#1 楼 @kevinxu varchar 还是有区别的吧,100 个话保存时候超过 100 个字符就自动截断了
#6 楼 @DestinyDesigner column 能设置成 unsigned int 这个特性是 mysql 特有的,使用了一旦要迁移 db 会比较麻烦,而且如果用来做 enum,unsigned int 和 signed int 范围没差; 如果拿来做自增主键之类,数据量到了 int32~uint32 这个范围,还是早点换 bigint 吧,故 unsigned int 这个特性本身也比较鸡肋