heroku部署错误ruby on rails undefinedtable

时间:2014-06-06 02:56:23

标签: ruby-on-rails heroku deployment undefined

我第一次部署我的rails应用程序,我收到以下错误:

  

迁移到Changetimezone(20140605033929)   == 20140605033929 Changetimezone:迁移===================================    - change_column(:opportunities,:updated_at,:date)PG :: UndefinedTable:ERROR:relation" opportunity"不存在 :   ALTER TABLE"机会" ALTER COLUMN" updated_at" TYPE日期耙   中止! StandardError:发生错误,此错误以及稍后发生   迁移已取消:

     

PG :: UndefinedTable:错误:关系"机会"不存在

这是我的机会模型:

class Opportunity < ActiveRecord::Base
before_save :check_for_nil,:calculate_derated_value
has_many :updates, dependent: :destroy
has_many :activities, dependent: :destroy   
has_many :contacts, dependent: :destroy
has_many :links, dependent: :destroy
显然,它有联想。我不确定为什么抱怨它没有关联...所有属于它的模型都有:belongs_to机会声明

我完全失去了可能发生的事情。我尝试过搜索但我无法找到解决这个问题的解决方案..有没有人有任何想法?

1 个答案:

答案 0 :(得分:3)

  

你能解释一下为什么这样做和/或必须完成吗?

<强>数据库

当您将Rails部署到production环境(本地为development)时,建议您设置另一个数据库来处理来自用户的production输入。

运行问题rake db:migrate 对本地&amp;生产数据库同步;仅适用于调用该命令的环境。

这意味着如果您将代码推送到Heroku,则需要确保已为其运行了所有migrations;如果没有它们,您将无法进行必要的更改。

-

根据评论,似乎呼叫rake db:setup也适合你。我不确定为什么这会对迁移起作用(因为rake db:setup只根据schema文件设置dbs):

<强> Difference between rake db:migrate db:reset and db:schema:load

  
      
  • db:migrate 运行尚未运行的(单个)迁移。
  •   
  • db:create 创建数据库
  •   
  • db:drop 删除数据库
  •   
  • db:schema:load 在schema.rb之后的(现有)数据库中创建表和列
  •   
  • db:setup 执行db:create,db:schema:load,db:seed
  • db:reset 执行db:drop,db:setup