【发布时间】:2012-06-01 11:04:49
【问题描述】:
当我创建表 users 时,生成的表有一个名为 id 的列,定义为整数。
我尝试将其修改为bigint,无符号如下:
change_column :users, :id, :integer, :limit => 8, :unsigned => true
确实将其更改为 bigint,但它不再是自动增量列(尽管它仍被标识为主索引,并且未设置为无符号(尽管 rails 告诉我迁移执行得很好))
然后我尝试做:
change_column :users, :id, :integer, :limit => 8, :unsigned => true, :null => false, :auto_increment => true
Rails 表示迁移执行良好,但没有任何改变。
我可以试试这样的:
change_column :users, :id, :primary_index
但这会让我回到我开始的地方
我也可以尝试使用 MySQL 代码执行“执行”语句,但我想保持迁移文件“干净”。有人遇到过这个问题吗?
顺便说一句,我还尝试在另一列上将默认值设置为 NULL,在这里(和谷歌)进行了研究,但没有成功。
编辑:
在通过通用迁移作为表创建的一部分创建列“id”之后,似乎无法对其进行编辑。做到这一点的唯一方法是使用 MySQL 语法的“执行”语句。
【问题讨论】:
标签: ruby-on-rails migration auto-increment dbnull