[ruby-list:48273] Re: require 'dbi' の警告について
From:
eiichi_maekawa@...
Date:
2011-08-08 02:25:22 UTC
List:
ruby-list #48273
前川です。 gemファイルの組み合わせが、悪いのかな と思っています。windows-xp + Ruby192p290の構成で、 MySQLを使っている方がいましたら、gem list の一覧を教えていただけません か? Mysql関連、信岡さんの助言で、ダウンロードして、インストールしましたが、 MySQLへのアクセスは、できませんでした。 ダウンロードは、2つのファイルは、Downloadを右クリックして、****.htmのままダ ウンロードし、htmをgemに修正してインストールしました。 インストールは、成功しました。結果は、以下です。 D:\Ruby192p290>gem install dbi-0.4.5.gem --no-ri --no-rdoc --local Successfully installed deprecated-2.0.1 Successfully installed dbi-0.4.5 2 gems installed D:\Ruby192p290> D:\Ruby192p290>ruby -v ruby 1.9.2p290 (2011-07-09) [i386-mingw32] D:\Ruby192p290>gem install dbd-mysql-0.4.4.gem --no-ri --no-rdoc --local Successfully installed mysql-2.8.1-x86-mingw32 Successfully installed dbd-mysql-0.4.4 2 gems installed Mysqlをアクセスするプログラムをrubyで実行 D:\Ruby192p290>cd D:\Apache2.2\htdocs\ruby_prg\em_ruby\em_db 実行結果が、以下です。 D:\Apache2.2\htdocs\ruby_prg\em_ruby\em_db>ruby dbi_mysql_connect2.rb D:/Ruby192p290/lib/ruby/gems/1.9.1/gems/deprecated-2.0.1/lib/deprecated.rb:199: warning: already initialized constant Deprecate #<DBI::DatabaseHandle:0xb444d0> #<DBI::StatementHandle:0xb441d0> D:/Ruby192p290/lib/ruby/gems/1.9.1/gems/dbd-mysql-0.4.4/lib/dbd/mysql/statement.rb:130: [BUG] Segmentation fault ruby 1.9.2p290 (2011-07-09) [i386-mingw32] -- control frame ---------- c:0009 p:---- s:0035 b:0035 l:000034 d:000034 CFUNC :fetch_fields c:0008 p:0093 s:0032 b:0032 l:000031 d:000031 METHOD D:/Ruby192p290/lib/ruby/gems/1.9.1/gems/dbd-mysql-0.4.4/lib/dbd/mysql/statement.rb:130 c:0007 p:0040 s:0024 b:0024 l:000018 d:000023 BLOCK D:/Ruby192p290/lib/ruby/gems/1.9.1/gems/dbd-mysql-0.4.4/lib/dbd/mysql/statement.rb:37 c:0006 p:0019 s:0022 b:0022 l:000021 d:000021 METHOD <internal:prelude>:10 c:0005 p:0029 s:0019 b:0019 l:000018 d:000018 METHOD D:/Ruby192p290/lib/ruby/gems/1.9.1/gems/dbd-mysql-0.4.4/lib/dbd/mysql/statement.rb:34 c:0004 p:0096 s:0014 b:0014 l:000013 d:000013 METHOD D:/Ruby192p290/lib/ruby/gems/1.9.1/gems/dbi-0.4.5/lib/dbi/handles/statement.rb:116 c:0003 p:0091 s:0010 b:0010 l:001f64 d:0024f4 EVAL dbi_mysql_connect2.rb:16 c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH c:0001 p:0000 s:0002 b:0002 l:001f64 d:001f64 TOP --------------------------- -- Ruby level backtrace information ---------------------------------------- dbi_mysql_connect2.rb:16:in `<main>' D:/Ruby192p290/lib/ruby/gems/1.9.1/gems/dbi-0.4.5/lib/dbi/handles/statement.rb:116:in `execute' D:/Ruby192p290/lib/ruby/gems/1.9.1/gems/dbd-mysql-0.4.4/lib/dbd/mysql/statement.rb:34:in `execute' <internal:prelude>:10:in `synchronize' D:/Ruby192p290/lib/ruby/gems/1.9.1/gems/dbd-mysql-0.4.4/lib/dbd/mysql/statement.rb:37:in `block in execute' D:/Ruby192p290/lib/ruby/gems/1.9.1/gems/dbd-mysql-0.4.4/lib/dbd/mysql/statement.rb:130:in `column_info' D:/Ruby192p290/lib/ruby/gems/1.9.1/gems/dbd-mysql-0.4.4/lib/dbd/mysql/statement.rb:130:in `fetch_fields' [NOTE] You may have encountered a bug in the Ruby interpreter or extension libraries. Bug reports are welcome. For details: http://www.ruby-lang.org/bugreport.html This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. D:\Apache2.2\htdocs\ruby_prg\em_ruby\em_db> eiichi_maekawa@mhi.co.jp wrote on 2011/08/08 10:21:57: > 信岡さん > > ありがとうございました。 > > 早速、教えていただいたgemファイルをダウンロードして、インストールしてみま > す。 > > しかしながら、メーリングに投げましたが、二つのファイルは、ダウンロード画 面 > ではなく、 > 文字が、表示されてしまいましました。 > > 了 > > "Y. Nobuoka" <nobuoka@r-definition.com> wrote on 2011/08/08 09:38:54: > > > 前川さん > > > > > ということは、[ruby-list:48255]も同じ原因ですか? > > > > いえ、Deprecated という名前の衝突が起きていますが、定数への再代入は警 > > 告が出るものの > > 後から代入したほうで上書きされるため、現状ではそれが原因で DBI, DBD- > > Mysql が使えなく > > なるわけではありません。 Windows 環境には詳しくないため [ruby-list:48255] > の > > 原因はわからないのですが、Deprecated の名前衝突が原因ではないはずです。 > > > > > 現状では、Ruby192p290,Ruby187p352の最新のバージョンでは、MySQLは、使 え > ない > > > と言うことですか? > > > > ちょっと環境が違うのでなんともいえませんが、以下のような構成で試してみ た > ところ > > ちゃんと ruby 1.9.2-p290 で DBI / DBD-Mysql を使って MySQL サーバーに接 > > 続できました。 > > > > + Ubuntu 10.04 (64-bit) > > + MySQL 5.1.41 > > + Ruby 1.9.2-p290 > > ++ rubygems 1.8.7 > > ++ dbi (gem) 0.4.5 > > ++ dbd-mysql (gem) 0.4.4 > > ++ deprecated (gem) 2.0.1 > > ++ mysql (gem) 2.8.1 > > > > [ruby-list:48255] のエラーメッセージを見た感じですと 「MySQL の driver > > (DBD-Mysql のこと?) > > が見つからない」 というエラーのようですので、DBI がどうやって DBD- > > Mysql を探しているのか > > を調べていけば原因がわかるのではないかなぁ、と思います。 (自信はありま せ > んが) > > > > DBI / DBD-Mysql に詳しくないのであまり役に立つことを言えずすみません。 > > > > > > 2011年8月8日8:15 <eiichi_maekawa@mhi.co.jp>: > > > > > > 前川です。 > > > > > > ということは、[ruby-list:48255]も同じ原因ですか? > > > > > > 現状では、Ruby192p290,Ruby187p352の最新のバージョンでは、MySQLは、使 え > ない > > > と言うことですか? > > > > > > "Y. Nobuoka" <nobuoka@r-definition.com> wrote on 2011/08/05 18:22:35: > > > > > >> 信岡です。 > > >> > > >> 解決策はわからないのですが、原因だけ。 > > >> > > >> > /usr/local/rvm/gems/ruby-1.9.2-p290/gems/deprecated-2.0. > > >> 1/lib/deprecated.rb:199: > > >> > warning: already initialized constant Deprecate > > >> > > >> という警告が出るとのことですが、これは読んだとおり > > >> 「deprecated という gem のコード中で Deprecate という定数に代入をし て > いる > > > が > > >> その定数は既に別の場所で初期化されている」 > > >> という警告です。 (定数に 2 回以上代入しようとすると警告が出る) > > >> > > >> で、その別の場所というのがどこかという問題ですが、rubygems そのもの に > > >> Deprecate というモジュールがある [1] ようなので、多分それだと思いま > す。 > > >> どう解決するのがいいのかはちょっとわかりません。 > > >> 名前が衝突しているので、どちらかの名前を変えるしかないんじゃないかと > > >> 思いますが。。 > > >> > > >> [1] http://rubygems.rubyforge.org/rubygems-update/Deprecate.html > > >> > > > > > > -- > > 信岡 ゆう (NOBUOKA Yu) > > > >