最近,当我试图更改模式中的列名时,遇到了一个错误。它在本地工作,但是当我在Heroku上迁移db:时,它给我一个错误,说这个列不存在。
在过去,我在统一我的生产模式和开发模式方面做得不好。这可能是因为我在本地创建迁移,在本地运行db:migrate,然后出于某种原因在本地删除迁移,然后推送到heroku,导致迁移在本地运行,而不是在prod中运行。(我现在知道这是一件可怕的事情,我应该在self.down中输入相反的函数,并执行rake db:rollback)
我想知道的是,我如何检查我的本地和prod模式是否不同,是否有一种方法可以只更改我的本地表/列以适应产品?因为它似乎只适用于生产环境,而且我知道我的本地环境中有无用的表/列。
发布于 2012-06-25 20:28:35
您可以使用以下命令在Heroku上运行bash控制台:
heroku run bash -a app_name在那里,您可以使用标准的bash命令导航文件系统,并对您的schema.rb文件进行cat,以便与本地schema.rb进行比较。
为了统一模式,我建议通读有关Rails Guide to Migrations中模式转储的详细信息。您可以将模式文件复制到您的本地环境,然后运行‘`rake db:reset’,这将删除您的开发数据库并从新的模式重新创建它。请务必阅读Schema转储的详细信息,因为根据数据库的需要,有多种方法可以转储模式。显然,在你开始之前,备份你需要的任何东西。
从那时起,你应该回到零开始,你可以再次正确地开始迁移,更新你的本地应用程序和Heroku。
发布于 2012-12-12 06:05:46
on Heroku's filesystem中记录的rake db:schema:dump无法正常工作。
您可以使用以下一行代码来打印在Heroku上运行的Rails应用程序的模式:
heroku run rails runner "\"sio = StringIO.new; ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, sio); puts sio.string\"" --app [YOUR APP NAME]https://stackoverflow.com/questions/11186244
复制相似问题