首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较Heroku Production Schema与Local Development Schema?

如何比较Heroku Production Schema与Local Development Schema?
EN

Stack Overflow用户
提问于 2012-06-25 17:01:19
回答 2查看 1.3K关注 0票数 2

最近,当我试图更改模式中的列名时,遇到了一个错误。它在本地工作,但是当我在Heroku上迁移db:时,它给我一个错误,说这个列不存在。

在过去,我在统一我的生产模式和开发模式方面做得不好。这可能是因为我在本地创建迁移,在本地运行db:migrate,然后出于某种原因在本地删除迁移,然后推送到heroku,导致迁移在本地运行,而不是在prod中运行。(我现在知道这是一件可怕的事情,我应该在self.down中输入相反的函数,并执行rake db:rollback)

我想知道的是,我如何检查我的本地和prod模式是否不同,是否有一种方法可以只更改我的本地表/列以适应产品?因为它似乎只适用于生产环境,而且我知道我的本地环境中有无用的表/列。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-25 20:28:35

您可以使用以下命令在Heroku上运行bash控制台:

代码语言:javascript
复制
heroku run bash -a app_name

在那里,您可以使用标准的bash命令导航文件系统,并对您的schema.rb文件进行cat,以便与本地schema.rb进行比较。

为了统一模式,我建议通读有关Rails Guide to Migrations中模式转储的详细信息。您可以将模式文件复制到您的本地环境,然后运行‘`rake db:reset’,这将删除您的开发数据库并从新的模式重新创建它。请务必阅读Schema转储的详细信息,因为根据数据库的需要,有多种方法可以转储模式。显然,在你开始之前,备份你需要的任何东西。

从那时起,你应该回到零开始,你可以再次正确地开始迁移,更新你的本地应用程序和Heroku。

票数 7
EN

Stack Overflow用户

发布于 2012-12-12 06:05:46

on Heroku's filesystem中记录的rake db:schema:dump无法正常工作。

您可以使用以下一行代码来打印在Heroku上运行的Rails应用程序的模式:

代码语言:javascript
复制
heroku run rails runner "\"sio = StringIO.new; ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, sio); puts sio.string\"" --app [YOUR APP NAME]
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11186244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档