我一直在我的机器上本地运行我的应用程序,并认为我已准备好将其推送到Heroku。 (我有关于开发/测试的SQL,但是生产中的PG是推荐的。)我遇到的问题是,在过去,我有多个迁移创建了一个名为 companies 的Devise模型,手动添加了属性 company_id 到我的Devise模型用户,将公司重命名为帐户,并重命名为 company_id 到 account_id 。当时进行所有这些迁移时,我的模式很好地反映了正在发生的事情。但是现在我正在为Heroku一次运行所有这些迁移,事情变得有些毛茸茸。
运行rake db:migrate attach to terminal ... up,run.4418 迁移到AddCompanyIdToUsers(20140521170926) 耙子流产了! NameError:未初始化的常量AddCompanyIdToUsers
基于其他SO问题的答案,我尝试了不同的事情:我已经尝试销毁所述迁移,因为它们不再相关。我尝试将迁移回滚到先前的迁移,删除问题迁移文件,然后再次迁移数据库。我还尝试在迁移过程中重命名迁移文件和/或类名称和/或模型名称。一切都无济于事。
20140521170926_add_company_id_to_users.rb
class AddCompanyIdToUsers < ActiveRecord::Migration
def change
add_column :users, :account_id, :integer
end
end
20140527013603_rename_companies_to_accounts.rb
class RenameCompaniesToAccounts < ActiveRecord::Migration
def change
rename_table :companies, :accounts
end
end
20140610013557_remove_account_id_from_users.rb
class RemoveAccountIdFromUsers < ActiveRecord::Migration
def change
remove_column :users, :account_id, :integer
end
end
20140614021611_add_account_id_to_users.rb
class AddAccountIdToUsers < ActiveRecord::Migration
def change
add_column :users, :account_id, :integer
end
end
正如你所看到的,我对我的一些决定有点犹豫不决,但是认为像上面那样进行迁移会更干净但是它看起来并不像我喜欢的那样顺利。如果需要,我可以使用我的架构更新。在此先感谢您的帮助!
答案 0 :(得分:0)
每个人都用数据库结构改变主意,这不是什么大问题
如果我是你,我会这样做:
- 浏览所有
migrations
( 很多?)- 对于每次迁移,我都会确定更改内容,并修改原始
create
迁移以反映您的更改- 对于您覆盖的迁移,我会删除
def change
方法中的所有内容(因此迁移为空白)git add .
所有这些修改后的迁移&amp;部署到heroku
- 运行
醇>heroku run rake db:migrate
这应该可以解决您的错误,但修改所有原始迁移可能需要一些时间!