生产模式下的Rails不连接到第二个数据库

时间:2013-11-22 09:01:45

标签: ruby-on-rails postgresql activerecord

我正在使用rails 3.2.15。我有两个postgresql数据库,其中一个是主要的,另一个是postgis。从模型Postgis我连接到postgis数据库,如下所示:

class Postgis < ActiveRecord::Base
  establish_connection :postgis_db
  self.table_name = 'geometry_columns'
  self.inheritance_column = :_type_disabled
end

在开发模式下一切正常。但是,当我切换到生产Web服务器时,无法启动下一个异常

gems/activerecord-3.2.15/lib/active_record/connection_adapters/postgresql_adapter.rb:1163:in `exec': PG::UndefinedTable: ERROR:  relation "postgis" does not exist (ActiveRecord::StatementInvalid)
LINE 5:              WHERE a.attrelid = '"postgis"'::regclass
                                        ^
:             SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                     pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
              FROM pg_attribute a LEFT JOIN pg_attrdef d
                ON a.attrelid = d.adrelid AND a.attnum = d.adnum
             WHERE a.attrelid = '"postgis"'::regclass
               AND a.attnum > 0 AND NOT a.attisdropped
             ORDER BY a.attnum

它没有连接到postgis数据库并尝试在主数据库中查找postgis表。我尝试了不同的方法连接到postgis DB,但结果是一样的。

编辑:

database.yml:

postgis_db:
  adapter: postgresql
  encoding: utf8
  reconnect: false
  database: mydb_gis
  pool: 5
  username: osmsrv
  password: osmsrv
  host: localhost
  schema_search_path: public
production:
  adapter: postgresql
  encoding: utf8
  reconnect: false
  database: gis
  pool: 5
  username: osmsrv
  password: osmsrv
  host: localhost

1 个答案:

答案 0 :(得分:1)

我解决了这个问题。 大约10天前,我建立了与第二个DB连接的模型,它工作正常。当我切换到生产时,我确信连接在开发中有效,但我错了。在开发连接也不起作用。问题出在gem'texticle'“2.0”中。删除后,连接正常。