我第一次部署我的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机会声明
我完全失去了可能发生的事情。我尝试过搜索但我无法找到解决这个问题的解决方案..有没有人有任何想法?
答案 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之后的(现有)数据库中创建表和列