我有一个指定 mySQL 列大小的迁移:
class CreateEntities < ActiveRecord::Migration
def change
create_table :entities do |t|
...
t.string :telephone, limit: 50
...
end
end
end
最初,此限制为 20
。
我似乎无法将这个新限制应用于数据库。
我试过:
> rake db:reset
还有
> rake db:drop
> rake db:setup
旧值仍然存在。
我还删除了 schema.rb
文件,但是当它重新创建时,它仍然包含旧值:
ActiveRecord::Schema.define(version: 20140718164541) do
create_table "entities", force: true do |t|
...
t.string "telephone", limit: 20
...
end
如果重要的话,我正在使用 Git。
最佳答案
rake db:reset
不会重新运行您的迁移。它清除数据库,加载模式,然后设置任何种子。要更改已存在的列的限制,您应该创建一个更改该列的新迁移:
class ChangeEntitiesTelephoneLimit < ActiveRecord::Migration
def change
change_column :entities, :telephone, :string, limit: 50
end
end
如果你真的想重复使用相同的迁移,删除并重新创建数据库,然后运行迁移:
rake db:drop
rake db:create
rake db:migrate
关于mysql - rake 数据库 :reset ignores changes to migration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25089170/