tanamonの稀に良く書く日記

KEEP CALM AND DRINK BEER

Ruby/DBIのインストール

Ruby(mswin32版)でRuby/DBIをインストールでやけに手間取ったので履歴を残しておきます。

MySQL/Rubyのインストール

C:\rubywork>gem install mysql
Successfully installed mysql-2.7.3-x86-mswin32
1 gem installed
Installing ri documentation for mysql-2.7.3-x86-mswin32...
Installing RDoc documentation for mysql-2.7.3-x86-mswin32...
ERROR:  While generating documentation for mysql-2.7.3-x86-mswin32
... MESSAGE:   Unhandled special: Special: type=17, text="<!-- $Id: README.html,
v 1.20 2006-12-20 05:31:52 tommy Exp $ -->"
... RDOC args: --op c:/ruby/lib/ruby/gems/1.8/doc/mysql-2.7.3-x86-mswin32/rdoc -
-exclude ext --main README --quiet ext README docs/README.html
(continuing with the rest of the installation)

C:\rubywork>gem list mysql

*** LOCAL GEMS ***

mysql (2.7.3)

インストールはされているようだけど、なんかエラーが出てる。
一度アンインストールしてから入れ直してみる。

C:\rubywork>gem uninstall mysql
Successfully uninstalled mysql-2.7.3-x86-mswin32

C:\work>gem install mysql --no-rdoc
Successfully installed mysql-2.7.3-x86-mswin32
1 gem installed
Installing ri documentation for mysql-2.7.3-x86-mswin32...

今度はエラーが出なくなった。

Ruby/DBIのインストール

C:\work>gem install dbi
Successfully installed dbi-0.4.1
1 gem installed
Installing ri documentation for dbi-0.4.1...
Installing RDoc documentation for dbi-0.4.1...

C:\work>gem install dbd-mysql
Successfully installed dbd-mysql-0.4.2
1 gem installed
Installing ri documentation for dbd-mysql-0.4.2...
Installing RDoc documentation for dbd-mysql-0.4.2...

これは普通に入った。

動作確認

c:\work>irb
irb(main):001:0> require 'dbi'
=> true
irb(main):002:0> DBI.connect('dbi:mysql:test:localhost', 'root', 'root')
DBI::InterfaceError: Could not load driver (uninitialized constant DBI::TypeUtil)
        from c:/Ruby/lib/ruby/site_ruby/1.8/dbi.rb:368:in `load_driver'
        from c:/Ruby/lib/ruby/site_ruby/1.8/dbi.rb:233:in `_get_full_driver'
        from c:/Ruby/lib/ruby/site_ruby/1.8/dbi.rb:219:in `connect'
        from (irb):2

なんかエラーが出てる。
エラーメッセージでググってもわからなかったので、gemでインストールすることを諦める。

Ruby/DBIのインストール(その2)

C:\work>gem uninstall dbd-mysql
Successfully uninstalled dbd-mysql-0.4.2

C:\rubywork>gem uninstall dbi
Remove executables:
        dbi

in addition to the gem? [Yn]  Y
Removing dbi
Successfully uninstalled dbi-0.4.1

次に、ここから以下の2つをダウンロードする。

それぞれ解凍して、インストールする。

C:\work>cd dbi-0.4.1
C:\work\dbi-0.4.1>ruby setup.rb
(略)
C:\work\dbi-0.4.1>cd ..\dbd-mysql-0.4.2
C:\work\dbd-mysql-0.4.2>ruby setup.rb
(略)

再び動作確認

c:\work>irb
irb(main):001:0> require 'dbi'
=> true
irb(main):002:0> dbh = DBI.connect('dbi:mysql:test:localhost', 'root', 'root')
=> #<DBI::DatabaseHandle:0x2c23380 @convert_types=true, @handle=#<DBI::DBD::Mysql::Database:0x2c1f398 @attr={"AutoCommit"=>true}, @handle=#<Mysql:0x2c20130>, @mutex=#<Mutex:0x2c1ef4c>, @have_transactions=true>, @trace_output=nil, @driver_name="Mysql", @trace_mode=nil>
irb(main):003:0> dbh.select_one('SELECT VERSION()')
=> ["5.1.30-community"]

今度は動いた。
結局、Ruby/DBIはgemから入れても動かないということか。