Rails ActiveRecord似乎忘记了我的PG架构

时间:2014-03-28 00:56:26

标签: ruby-on-rails postgresql activerecord pg

我有一个架构,我们称之为'遗忘'架构,rails似乎认识并使用它大约几个小时,但是由于我不知道的原因,我开始得到这样的错误:

ActiveRecord::StatementInvalid (PG::Error: ERROR:  schema "forgotten" does not exist
LINE 1: SELECT COUNT(*) FROM "forgotten"."stuff"

ActionView::Template::Error (PG::Error: ERROR:  schema "forgotten" does not exist
LINE 1: ...COUNT(DISTINCT "forgotten"."other_stuff"."id") FROM "forgotten"."oth...

几乎像rails忘记了我的架构存在。

我的database.yml:

production:
  adapter: postgresql
  encoding: UTF8
  username: xxxxxx
  host: xxxxx
  database: xxxxx
  password: xxxxx

我希望它像添加一样简单:

schema_search_path: 'forgotten, public'

但我得到的结果相同。

我的应用程序的其他部分使用公共表一旦开始发生就没有问题,只是没有任何使用非公共模式。让这个再次工作的唯一方法是重新启动nginx / passenger。然后事情再好几个小时,直到模式问题再次启动。

所以我希望推荐那些希望之前遇到并解决过这个问题的开发人员。谢谢!

1 个答案:

答案 0 :(得分:0)

所以看来以下问题解决了我的问题:

ALTER DATABASE <database> SET search_path = forgotten, public;

由于此命令位于架构搜索路径的PG优先级的顶部,因此这应该是永久解决方案。我刚刚将它添加到迁移中。