2011年8月 8日

[ruby-list:48273] Re: require 'dbi' の警告について

前川です。

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@xxxxx wrote on 2011/08/08 10:21:57:

> 信岡さん
>
> ありがとうございました。
>
> 早速、教えていただいたgemファイルをダウンロードして、インストールしてみま
> す。
>
> しかしながら、メーリングに投げましたが、二つのファイルは、ダウンロード画

> ではなく、
> 文字が、表示されてしまいましました。
>
> 了
>
> "Y. Nobuoka" <nobuoka@xxxxx> 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@xxxxx>:
> > >
> > > 前川です。
> > >
> > > ということは、[ruby-list:48255]も同じ原因ですか?
> > >
> > > 現状では、Ruby192p290,Ruby187p352の最新のバージョンでは、MySQLは、使

> ない
> > > と言うことですか?
> > >
> > > "Y. Nobuoka" <nobuoka@xxxxx> 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)
> >
>
>

投稿者 xml-rpc : 2011年8月 8日 11:25
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/105543
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。