Jruby On Rails是最好的数据库适配器,mysql2或jdbcmysql



我正在开发JRuby on Rails应用程序,该应用程序具有JRuby-1.6.7Rails 3.2.2

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

我使用了mysql2jdbcmysql数据库适配器。两者都在工作。

但如果我在一段时间内没有访问应用程序,并且在那之后当我访问它时,它会给出如下错误

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

我应该更喜欢哪个数据库适配器?部署后我的应用程序会正常工作吗?

我以前也遇到过同样的错误,但经过一些努力,我在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

希望能有所帮助。

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

我在活动记录jdbc github问题列表中发现了这一点:

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

基本上,它猴子补丁新的解释方法什么都不做——直到它扩展到支持它

HTH,Chris

自AR-JDBC 1.2.x以来,尤其是在使用1.3.x时,可以保持JRuby的配置,例如:

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

Gemfile相比,只需将mysql2等gem限制为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似乎为回购产生了大量流量,因此添加了一个最新的答案。

最新更新