tetsuwan blog

鉄ワン(@tetsuwan30)の気ままなダイアリー

ActiveRecordとmysql2のバージョン問題

ActiveRecordで上手くmysqlに接続できないなあと思っていろいろと調べた内容をまとめてみました。

※ただ、きちんと動作を行って検証したわけではないので、間違っている箇所がありましたら、コメント下さい。

mysqlとmysql2

ruby/mysqlに替わってmysql2が利用されるようになっているのは薄々気づいていたのですが、これって全くの別物なのですね。

それでもって、ActiveRecordでは3.0以降にmysql2を採用しているようですが、これがmysql2のバージョンによっては動かないわけで。

gemのそれぞれの最新リリースについて下記のサイトで確認しました。
http://rubygems.org/gems/mysql
http://rubygems.org/gems/mysql2
http://rubygems.org/gems/activerecord

ActiveRecord2.3、3.0、3.1ごとのmysql

ActiveRecordはそれぞれ3つの現行のリリースがありますが、それぞれで利用可能だと思われるmysqlのライブラリはこんな感じです。

ActiveRecord 2.3系 最新:2.3.14 mysql 最新:2.8.1
ActiveRecord 3.0系 最新:3.0.10 mysql2 最新:0.2.13
ActiveRecord 3.1系 最新:3.1.0.rc6 mysql2 最新:0.3.7

それぞれのバージョンはこちら
http://rubygems.org/gems/mysql2/versions/0.2.13
http://rubygems.org/gems/mysql2/versions/0.3.7
http://rubygems.org/gems/activerecord/versions/2.3.14
http://rubygems.org/gems/activerecord/versions/3.0.10
http://rubygems.org/gems/activerecord/versions/3.1.0.rc6

背景としては、ActiveRecordRailsの一部であり、Rail新規バージョン(3.1)への移行直前であることが影響しているようですね。
http://rubyonrails.org/

gemメソッドでgemライブラリのバージョンを指定

http://aligach.net/diary/20090224.html

gemライブラリのバージョンを指定する方法

  • インストール
gem install activerecord --version "2.3.14"
  • バージョン指定
require "rubygems"
gem "activerecord", "2.3.14"
require "activerecord"