gpt4 book ai didi

ruby-on-rails - Rails 5 : Why does rails add column to schema. rb 即使我已经删除了迁移文件

转载 作者:行者123 更新时间:2023-11-29 14:30:12 26 4
gpt4 key购买 nike

我创建了一个迁移:

class AddFormCounterToUsers < ActiveRecord::Migration[5.2]
def change
add_column :users, :form_count, :integer, default: 0
end
end

我运行了 rails db:migrate 但很快意识到我错误地重命名了该列。所以我运行了 git reset master --hard —— 这样迁移文件就被删除了,并且 schema.rb 被重置了 —— 然后重新开始:

class AddFormCounterToUsers < ActiveRecord::Migration[5.2]
def change
add_column :users, :forms_count, :integer, default: 0
end
end

但是当我这次运行 rails db:migrate 时,不仅创建了新列,还创建了旧列。

  t.integer "form_count", default: 0
t.integer "forms_count", default: 0

呃?所以我运行了 rails db:rollback 看看是否可行。但这失败并出现错误:No migration with version number 20181025092233. 由于我没有提交该文件,我相信没有办法恢复它。

这种迁移持续在哪里以及为什么持续存在?决定删除和重做迁移时的最佳做法是什么?摆脱这种泡菜的最好方法是什么?除了运行 rails db:reset 之外还有什么方法吗? (我正在使用 Postgres。)

最佳答案

首先,做一个数据库备份。然后,放下你的数据库(rake db:drop),在此之后删除你的 schema.rb 然后,开始清理你的项目

rake db:schema:cache:clear
rake db:schema:cache:dump

最后再次创建你的数据库

rake db:create
rake db:migrate

大多数时候,只需删除“schema.rb”即可避免此类错误。始终通过控制台 rails 命令维护项目组织。让 Git 控制您的应用程序的版本。

关于ruby-on-rails - Rails 5 : Why does rails add column to schema. rb 即使我已经删除了迁移文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52986147/

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