Hatena::ブログ(Diary)

tanamonの日記

2008-12-19

[]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/DBIgemから入れても動かないということか。

stryhstryh 2009/06/03 17:31 DBIのインストールに参考にさせてもらいました。
で、上記の手順でzipファイル解凍後にインストールしたのですが、DBI.connectの部分でエラーになってしまい、gem installで「dbi」、「dbd-mysql」、「mysql」(これは途中でエラーになったがとりあえず無視)をインストール後にirbでDBI.connectを行ったら成功しました。
以前もこの辺ではまったんですよね。
そのときのdbiのヴァージョンは0.2.0でした。
なんか一筋縄にはいかないんですよね〜。

stryhstryh 2009/06/07 16:55 すいません訂正があります。
一度インストールしてある、Rubyをアンインストールし再度インストール後にtanamonさんの方法でdbi諸々をインストールすると成功します。
どうもgemでうまくいったのは古いのが残っていたからみたいです。

ちなみにdbiをgemからではなくruby setup.rbで行った場合、dbiが依存するライブラリーのdeprecatedが入らないのでこれはgemでインストールする必要があります。

今回のtanamonさんの場合だと最初に「gem install dbi」で依存するものも一緒にインストールされたので問題にはならなかったのかなと思います。

tanamontanamon 2009/06/08 12:48 > stryhさん
参考になる情報ありがとうございます。
古いゴミが残る件なんぞは全く気にしていなかったので、改めて挑戦してみたいと思います。

isikawaisikawa 2015/05/06 21:37 上記の手順でconnetのところに下記のエラーが出てしまいました
DBI::InterfaceError: Unable to load driver 'mysql' (underlying error: wrong constant name mysql)
zipファイルをダウンしたいですが、サイトがもうアクセスできなくなったみたいです。
まいったなぁ!
お願いですが上記手順にあるzipファイルがありますでしょうか。

tanamontanamon 2015/05/06 21:49 > isikawaさん

http://mirror.as24220.net/pub/rubygems/files/ruby-dbi/

ここからダウンロードしたのが使えるかも?

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証