PG ::错误:错误:关于开发与生产之间不存在关系(rails 3.1.3)

时间:2014-02-25 22:42:22

标签: ruby-on-rails rails-migrations pg

我已经吹走了我的数据库,现在又遇到了迁移回工作数据库的问题。

该错误与已发布的其他问题看起来相同,但我无法弄清楚如何解决它。我可以改变什么来恢复我的环境?怎么会这样?

我已经验证了数据库确实存在,但迁移步骤并未创建表。

错误如下:

$ RAILS_ENV="development" bundle exec rake db:test:prepare
rake aborted!
PG::Error: ERROR:  relation "documents" does not exist
LINE 4:              WHERE a.attrelid = '"documents"'::regclass
                                        ^

注意:尝试以下任何一种结果都得到相同的结果:

$ bundle exec spec
$ RAILS_ENV="development" bundle exec rake db:migrate
$ RAILS_ENV="development" bundle exec rake db:test:prepare
$ RAILS_ENV="development" bundle exec rake db:schema:load

理论一:

这可能与我的迁移编写方式有关:我有一个类段落:

class Paragraph < ActiveRecord::Base
  belongs_to :document
  validates_presence_of :document, :document_index
  validates_uniqueness_of :document_index, scope: [:document_id]

然而,最初在开发时我最后添加了模型“文档”。我应该以某种方式改变迁移的顺序吗?

理论二: 当我使用“生产”运行其中任何一个时,它们工作正常(当然除了我的测试)。

因此,配置错误会受到数据库配置的某种影响。

你说什么?

1 个答案:

答案 0 :(得分:0)

在运行迁移之前,将初始化整个Rails环境。所以可能在初始化过程中执行的代码试图使用缺少的关系。

使用--trace选项运行rake任务以跟踪此代码。