У нас проблема с приложением Ruby on Rails 3.0.3.Кажется, что по какой-то причине ActiveRecord использует запрос, отформатированный для MySQL, когда мы выполняем find () для модели MSSQL.Приложение rails использует MySQL для своих моделей;однако, также есть эталонные модели, которые поддерживаются в базе данных MSSQL.Как показано в приведенном ниже сообщении, мы используем соединение ODBC.Когда я вызываю Club.find (137), я получаю следующую ошибку:
ODBC :: Ошибка: 37000 (102) [unixODBC] [FreeTDS] [SQL Server] Неверный синтаксис рядом с «LIMIT».: ВЫБРАТЬ [клуб]. * ИЗ [клуба] ГДЕ ([клуб]. [ClubID] = N'137 ') LIMIT 1
Обратите внимание, что Club.find (: все) работаетхорошо, так что подключение работает, проблема заключается в генерации формата запроса SQL.OtherModel.find (1) также работает (модель, которая связана с базой данных MySQL).
Что я делаю невозможно?Я предполагаю, что это что-то с кэшированием запросов ... Кто-нибудь знает, как решить вышеупомянутое?Большое спасибо за всю помощь заранее.
Вот установка:
Драгоценные камни: gem 'mysql2' gem 'rails-dbi' gem 'ruby-odbc'gem' activerecord-sqlserver-adapter '
Модели (примеры):
class Club < External
...
end
class External < ActiveRecord:Base
establish_connection('mssql_' + Rails.env)
...
end
class OtherModel < ActiveRecord:Base
...
end
database.yml Пример:
environment:
adapter: mysql2
encoding: utf8
host: localhost
pool: 5
username:
password:
database: my_app_development
mssql_environment:
adapter: sqlserver
mode: odbc
pool: 5
dsn: MYDSN
username:
password: