我已经吹走了我的数据库,现在又遇到了迁移回工作数据库的问题。
该错误与已发布的其他问题看起来相同,但我无法弄清楚如何解决它。我可以改变什么来恢复我的环境?怎么会这样?
我已经验证了数据库确实存在,但迁移步骤并未创建表。
错误如下:
$ 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]
然而,最初在开发时我最后添加了模型“文档”。我应该以某种方式改变迁移的顺序吗?
理论二: 当我使用“生产”运行其中任何一个时,它们工作正常(当然除了我的测试)。
因此,配置错误会受到数据库配置的某种影响。
你说什么?
答案 0 :(得分:0)
在运行迁移之前,将初始化整个Rails环境。所以可能在初始化过程中执行的代码试图使用缺少的关系。
使用--trace
选项运行rake任务以跟踪此代码。