2012-03-30 2 views
3

Я работаю над JRuby на Rails приложения, имеющие JRuby-1.6.7 и Rails 3.2.2Jruby On Rails, который является лучшим адаптером базы данных, mysql2 или jdbcmysql?

У меня есть MySQL базы данных. Я пытался использовать адаптер базы данных.

Я использовал mysql2 и адаптер базы данных jdbcmysql. Оба работают.

Но если я не имеют доступа к применению в течение некоторого времени, и после этого, когда я к нему доступ, он дает ошибку следующим образом

undefined method `explain' for #<ActiveRecord::ConnectionAdapters::MySQLAdapter:0x1139ba37> 

Какой адаптер базы данных следует предпочесть? Будет ли моя апликация работать после развертывания?

ответ

4

Я получил ту же ошибку раньше, но после некоторых усилий я определил адаптер в моем файле драгоценного камня, как показано ниже, и все работает отлично до сегодняшнего дня:

if defined?(JRUBY_VERSION) 
    gem 'activerecord-jdbc-adapter', '=1.1.3' 
    gem 'jdbc-mysql', :require=>false 
    gem 'activerecord-jdbcmysql-adapter', '=1.1.3' 
else 
    gem 'mysql2' 
end 

надежды, что помогает.

+0

Большое спасибо за ваш ответ. Я добавил код в ** GemFile ** согласно вашему предложению. Теперь он работает нормально. –

+0

Можете ли вы рассказать мне, какой адаптер я должен указать в database.yml адаптер: mysql2 или адаптер: jdbcmysql Пожалуйста, дайте мне знать. –

+0

Просто добавьте 'jdbcmysql' – Vik

0

Я попробовал решение @ Vik о понижении активности activerecord-jdbc, но это не сработало для меня - вызвало больше проблем.

Я нашел это на ActiveRecord-JDBC список вопросов GitHub:

https://github.com/jruby/activerecord-jdbc-adapter/issues/159

В основном это обезьяна патчи новый метод объяснить ничего не делать - пока ее не будет продлен, чтобы поддержать его.

НТН, Крис

+0

У меня все еще есть проблемы с ним .Again получил ошибку «неопределенный метод объясняет». Я думаю, что jdbc-mysqladapter внутренне с использованием mysql-адаптера из rails и mysql-адаптера не имеет метода объяснения, но имеет адаптер mysql2. –

+0

Hi @shailesh_srk - вы попробовали патч обезьяны объяснения, упомянутый в проблеме github?Это дает метод объяснения, тем самым обойти эту проблему. –

+0

Нет, я не пробовал, так как исправление не является хорошим подходом, и оно исправляется в ActiveRecord. Я думаю использовать адаптер mysql2 вместо jdbcmysql в database.yml, что вы думаете? Есть ли другой путь ? –

0

поскольку AR-JDBC 1.2.x и ESP. при использовании 1.3.x это нормально, чтобы сохранить конфигурацию как есть для JRuby, например. :

development: 
    adapter: mysql2 
    database: blog_development 
    username: blog 
production: 
    adapter: mysql2 
    database: blog 
    pool: 50 
# ... etc 

чем в Gemfile просто ограничить драгоценные камни, такие как mysql2 МРТ и -MySQL JDBC для JRuby:

source 'https://rubygems.org' 

gem 'rails', '~> 3.2.17' 

gem 'mysql2', :platform => :mri 
gem 'activerecord-jdbc-adapter' 
gem 'jdbc-mysql', :platform => :jruby 

# ... 

P.S. этот q, по-видимому, генерирует много трафика для репо, таким образом, добавляет актуальный ответ.