新手问题 rails 如何设置数据库字段长度

2forVendetta · 2013年05月09日 · 最后由 method_missing 回复于 2013年05月10日 · 5632 次阅读

比如 varchar(100) 这种 看到教程都是 name:string 然后数据库默认都是 255 的

varchar(100) 和 varchar(255) 在 mysql 内的存储数据类型是没有区别的,100 和 255 是用来告诉 client 显示的时候宽度多少。同理 int(10), int(1) 都是没有区别的。

#1 楼 @kevinxu 长见识了,还真不知道这个。

:), 还有一个需要注意的是 id 字段 rails 默认是 int,如果将来表巨大还是考虑用 unsigned int 或者 big int。之前遇到一次 id 自增到 2B+,结果没有空间了,后来花了几天把 int 转成 bigint,真是很痛苦 ~~

t.string :name, limit: 2000, unique: true, default: "hello world"
6 楼 已删除
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 这个特性本身也比较鸡肋

需要 登录 后方可回复, 如果你还没有账号请 注册新账号