Jruby On Rails,哪个是最好的数据库适配器,mysql2还是jdbcmysql?

时间:2012-03-30 11:50:52

标签: jruby jrubyonrails

我正在研究JRuby on Rails应用 JRuby-1.6.7 Rails 3.2.2

我有 mysql 数据库。我正在尝试使用数据库适配器。

我使用了 mysql2 jdbcmysql 数据库适配器。两者都有效。

但是如果我在一段时间内没有访问应用程序,那么当我访问它时,它会产生如下错误

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

我应该选择哪种数据库适配器?部署后我的应用程序能正常工作吗?

3 个答案:

答案 0 :(得分:4)

之前我遇到了同样的错误,但经过一番努力后,我在我的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
希望有所帮助。

答案 1 :(得分:0)

我尝试了@Vik降级activerecord-jdbc的解决方案,但它对我不起作用 - 导致更多问题。

我在activerecord-jdbc github问题列表中找到了这个:

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

基本上它是猴子修补新的解释方法什么都不做 - 直到它扩展到支持它。

HTH,Chris

答案 2 :(得分: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 等gems限制为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

# ...

P.S。这个q似乎为回购创造了大量的流量,因此增加了一个最新的答案。