Проблема с подключением к БД в производстве - PullRequest
1 голос
/ 21 мая 2009

У меня есть отдельная БД для одной модели в моем приложении и в разработке В режиме соединение работает должным образом, в производстве, однако это не так.

production:
  adapter: mysql
  host: myhost
  username: root
  password:
  database: production_db

users_production:
  adapter: mysql
  host: myhost
  username: root
  password:
  database: other_db

Модель, которая подключается к другой базе данных, называется User, но Таблица, на которую он ссылается в other_db, равна smf_users, поэтому мой User.rb выглядит это:

class User < ActiveRecord::Base
  establish_connection "users_#{RAILS_ENV}"
  set_table_name "smf_users"
end

На производстве я получаю эту ошибку:

Mysql::Error: Table 'production_db. smf_users' doesn't exist:

Обратите внимание, как он пытается подключиться к неверной базе данных, и это не так найти правильную таблицу. Как я уже сказал, это работает в режиме разработки.

Есть предложения?

Ответы [ 3 ]

1 голос
/ 08 июня 2009

Я обнаружил, что при использовании нескольких баз данных странные ошибки появляются при выполнении ассоциаций. Есть ли шанс, что у вас есть другая модель, которая belongs_to :users, и вы ожидаете, что она будет работать? В противном случае вам придется взглянуть на кеширование - вполне возможно, что Rails не сможет правильно кэшировать данные соединения для вашей дополнительной базы данных.

0 голосов
/ 22 мая 2009

Вы можете найти это полезным: http://magicmodels.rubyforge.org/magic_multi_connections/

0 голосов
/ 21 мая 2009

Попробуйте:

establish_connection configurations[RAILS_ENV]["users_#{RAILS_ENV}"]
User.connection

Install_connection нуждается в хэше информации о соединении. Это должно вернуться, если из database.yml.

Возможно, вы захотите проверить свой журнал на наличие сообщения, подобного следующему:

«База данных users_production не настроена»

Это сообщение будет выдано ActiveRecord :: Base, если он не сможет найти конфигурацию по строке в database.yml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...