Jruby On Rails, какой лучший адаптер базы данных, mysql2 или jdbcmysql? - PullRequest
3 голосов
/ 30 марта 2012

Я работаю над приложением JRuby on Rails, имеющим JRuby-1.6.7 и Rails 3.2.2

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

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

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

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

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

Ответы [ 3 ]

4 голосов
/ 30 марта 2012

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

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 голосов
/ 14 апреля 2014

начиная с 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 для MRI и jdbc-mysql для JRuby:

source 'https://rubygems.org'

gem 'rails', '~> 3.2.17'

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

# ...

ps этот q, по-видимому, генерирует много трафика для репо, таким образом, добавляется доДата ответа.

0 голосов
/ 04 апреля 2012

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

Я нашел это в списке проблем activerecord-jdbc github:

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

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

HTH, Крис

...