我有一个模式,我们称之为“遗忘”模式,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忘记了我的模式存在一样。
我的数据库.yml:
production:
adapter: postgresql
encoding: UTF8
username: xxxxxx
host: xxxxx
database: xxxxx
password: xxxxx
我真希望能像加上:
schema_search_path: 'forgotten, public'
但我得到了同样的结果。
我的应用程序的其他部分使用公共表,一旦发生这种情况,没有问题,只是没有任何使用非公共模式。重新启动nginx/passenger是使此功能正常工作的唯一方法。然后,事情又正常工作了几个小时,直到模式问题再次出现。
所以我希望遵从那些希望以前遇到并解决过这个问题的开发人员。谢谢!
最佳答案
所以看来,以下几点解决了我的问题:
ALTER DATABASE <database> SET search_path = forgotten, public;
由于此命令位于架构搜索路径的PG优先级的顶部,因此这应该是一个永久的解决方案。我刚把它添加到迁移中。