gpt4 book ai didi

mysql - rake 数据库 :reset ignores changes to migration

转载 作者:行者123 更新时间:2023-11-29 06:35:30 24 4
gpt4 key购买 nike

我有一个指定 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com