gpt4 book ai didi

ruby-on-rails - 我修复了一个失败的 rails 迁移,但为什么这个修复有效?

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:34 25 4
gpt4 key购买 nike

我生成了一个新的 Rails 迁移:

rails generate migration some_new_column_to_table

编辑: --

运行迁移:

rake db:migrate

更新测试数据库:

rake db:test:prepare

意识到我没有向更改方法添加任何内容,然后

更新了迁移文件:

class AddSomeColumnToTable < ActiveRecord::Migration
def change
add_column :table, :some_column, :string
add_index :table, :some_column
end
end

(再次)运行迁移:

rake db:migrate

更新测试数据库(再次):

rake db:test:prepare

运行这些命令后,“some_column”没有被添加到数据库中。我在这里找到了这个问题的解决方案:rake db:migrate is not working

rake db:drop:all
rake db:create:all
rake db:migrate

为什么这能解决问题?以后如何预防?

最佳答案

不清楚你的问题是什么。但你最后的命令确实理顺了事情。

rake db:drop:all  << drop the database
rake db:create:all << create the database (not the tables)
rake db:migrate << build up the database based on the migrations

根据我的经验,迁移不会“停止工作”,它们会完全按照计划进行,因为它们只不过是单独的命令。但是,它们需要按顺序执行,因此如果您开始编辑迁移,则必须知道迁移是否已运行。迁移问题通常是我们乱序编辑它们的结果。最安全的做法是不要编辑已经运行的迁移。首先执行以下任一操作:

rake db:rollback  << rollback the last migration (you can do this multiple times)
rake db:migrate VERSION=00000 << This will rollback to a specific migration
rake db:rollback STEP=2 << rollback 2 migrations

希望对您有所帮助。

关于ruby-on-rails - 我修复了一个失败的 rails 迁移,但为什么这个修复有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13291347/

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