Предложение LIMIT в MSSQL RoR ActiveRecord Query - PullRequest
1 голос
/ 18 марта 2011

У нас проблема с приложением 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: 

1 Ответ

1 голос
/ 16 июня 2011

Я являюсь автором адаптера, и некоторые вещи, которые мы имеем в посетителе Arel для SQL Server, должны расширять посетителей для ограничения / смещения.Я думаю, что это была ошибка, которую мы исправили в последних версиях, поэтому у тех, кто работает с адаптером SQL Server в среде с несколькими базами данных, больше опыта.

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