Project

General

Profile

Bug #1819

Ruby-1.9.1を使用しDB(MySQL)接続時にエラー

Added by stryh (Ryouhei Saita 斉田) almost 10 years ago. Updated about 8 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
ruby -v:
ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-mswin32]
[ruby-dev:38914]

Description

=begin
初めて報告させていただきます。


● OS -> Windows XP SP2
● Ruby -> ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-mswin32]
● dbi -> 0.4.2
● dbd-mysql -> 0.4.3
● MySQL API module for Ruby -> 2.7.3
● DB(MySQL) -> 5.1.34-community


上記のヴァージョン・環境でDB接続をするとエラーが現在発生しています。
接続の確認はirb・Rubyプログラム共に行いましたが、両方エラーが発生します。
因みに1.8.7では正常に動作します。

■ irbでの確認
1 require 'dbi'
2 dbh = DBI.connect('DBI:mysql:[DB名]:[ホスト名]','[user]','[poasswd]')
[]は読み替えてください。

1の箇所ではtrueが返ってきます。
2を実行すると以下のダイアログが表示されます。

「msvcrt-ruby18.dllが見つからなかったため、このアプリケーションを開始できませんでした。
アプリケーションをし直すとこの問題は解決される場合があります。」

トレースは・・・

DBI::InterfaceError: Could not load driver (Could not find driver mysql or mysql (error: 126: 指定されたモジュールが見つかりません。 - RUBY_HOME/lib/ruby/gems/1.9.1/gems/mysql-2.7.3-x86-mswin32/ext/mysql.so))
from RUBY_HOME/lib/ruby/site_ruby/1.9.1/dbi.rb:318:in rescue in load_driver'
from RUBY_HOME/lib/ruby/site_ruby/1.9.1/dbi.rb:242:in
load_driver'
from RUBY_HOME/lib/ruby/site_ruby/1.9.1/dbi.rb:160:in _get_full_driver'
from RUBY_HOME/lib/ruby/site_ruby/1.9.1/dbi.rb:145:in
connect'
from (irb):4
from RUBY_HOME/bin/irb.bat:20:in `'

RUBY_HOMEは読み替えてください。

■ Rubyプログラム
こちらでの確認時のトレースは・・・

RUBY_HOME/lib/ruby/gems/1.9.1/gems/mysql-2.7.3-x86-mswin32/ext/mysql.so: [BUG] Segmentation fault
ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-mswin32]

-- control frame ----------
c:0013 p:-4484100 s:0060 b:0060 l:000059 d:000059 TOP
c:0012 p:---- s:0058 b:0058 l:000057 d:000057 CFUNC :require
c:0011 p:0062 s:0054 b:0054 l:000053 d:000053 TOP RUBY_HOME/lib/ruby/site_ruby/1.9.1/dbd/Mysql.rb:39
c:0010 p:---- s:0051 b:0051 l:000050 d:000050 FINISH
c:0009 p:---- s:0049 b:0049 l:000048 d:000048 CFUNC :require
c:0008 p:0084 s:0045 b:0045 l:000030 d:000044 BLOCK RUBY_HOME/lib/ruby/site_ruby/1.9.1/dbi.rb:251
c:0007 p:0019 s:0034 b:0034 l:000033 d:000033 METHOD RUBY_HOME/lib/ruby/1.9.1/monitor.rb:190
c:0006 p:0012 s:0031 b:0031 l:000030 d:000030 METHOD RUBY_HOME/lib/ruby/site_ruby/1.9.1/dbi.rb:242
c:0005 p:0031 s:0027 b:0027 l:000026 d:000026 METHOD RUBY_HOME/lib/ruby/site_ruby/1.9.1/dbi.rb:160
c:0004 p:0022 s:0020 b:0020 l:000019 d:000019 METHOD RUBY_HOME/lib/ruby/site_ruby/1.9.1/dbi.rb:145
c:0003 p:0035 s:0009 b:0009 l:0005a4 d:001470 EVAL db_conectDBI_mysql.rb:5
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:0005a4 d:0005a4 TOP :33


-- Ruby level backtrace information-----------------------------------------
RUBY_HOME/lib/ruby/site_ruby/1.9.1/dbd/Mysql.rb:39:in require'
RUBY_HOME/lib/ruby/site_ruby/1.9.1/dbd/Mysql.rb:39:in
'
RUBY_HOME/lib/ruby/site_ruby/1.9.1/dbi.rb:251:in require'
RUBY_HOME/lib/ruby/site_ruby/1.9.1/dbi.rb:251:in
block in load_driver'
RUBY_HOME/lib/ruby/1.9.1/monitor.rb:190:in mon_synchronize'
RUBY_HOME/lib/ruby/site_ruby/1.9.1/dbi.rb:242:in
load_driver'
RUBY_HOME/lib/ruby/site_ruby/1.9.1/dbi.rb:160:in _get_full_driver'
RUBY_HOME/lib/ruby/site_ruby/1.9.1/dbi.rb:145:in
connect'
db_conectDBI_mysql.rb:5:in `'

[NOTE]
You may encounter a bug of Ruby interpreter. 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.

RUBY_HOMEは読み替えてください。
=end

History

#1

Updated by naruse (Yui NARUSE) almost 10 years ago

  • Status changed from Open to Rejected

=begin
MySQL/RubyがRuby 1.9.1に対応したのはversion 2.8.1からです。
http://www.tmtm.org/mysql/ruby/

Ruby1.9.1用のライブラリがOSのパッケージマネージャで入れられるようになるには、おそらくもうしばらくかかるでしょう。それまではRuby1.8.7を使うか、rubygemsから入れるか、自分でビルドしてください。
=end

#2

Updated by stryh (Ryouhei Saita 斉田) almost 10 years ago

=begin

MySQL/RubyがRuby 1.9.1に対応したのはversion 2.8.1からです。
http://www.tmtm.org/mysql/ruby/

これなのですが、自分がインストールしたものはこれではないです。

$ gem install mysql

を実行しインストールしたものです。

この場合でもNARUSEさんにコメントしていただいたことが言えるのでしょうか?

=end

#3

Updated by naruse (Yui NARUSE) almost 10 years ago

=begin
gem specification mysql
を実行してみてください。
=end

#4

Updated by stryh (Ryouhei Saita 斉田) almost 10 years ago

=begin

gem specification mysql
を実行してみてください。

実行しました。
初めて使うコマンドなので該当するのか分かりませんが、恐らく「mysql」の仕様が表示されています。

その中で
required_ruby_version: !ruby/object:Gem::Requirement
requirements:

  • - ">="
    • !ruby/object:Gem::Version version: 1.8.2 version: と表示される部分がありました。 これはこのgem(今回であればmysql)が必要とするRubyのヴァージョンをさしているのでしょうか? 仮にそうであるなら、このgemは1.9.1では動作しないということですね。 =end
#5

Updated by naruse (Yui NARUSE) almost 10 years ago

=begin
見てほしかったのは、
homepage: http://www.tmtm.org/en/mysql/ruby/
ですね。
=end

#6

Updated by stryh (Ryouhei Saita 斉田) almost 10 years ago

=begin
自分の環境では以下のように出力されています。

--- !ruby/object:Gem::Specification
name: mysql
version: !ruby/object:Gem::Version
version: 2.7.3
platform: mswin32
authors:

  • Kevin Williams autorequire: mysql bindir: bin cert_chain: date: 2006-12-28 00:00:00 +09:00 default_executable: dependencies: []

description: A win32-native build of the MySQL API module for Ruby.
email: kevin@bantamtech.com
executables: []

extensions: []

extra_rdoc_files:

  • README
  • docs/README.html files:
  • docs
  • ext/mysql.so
  • ext/extconf.rb
  • ext/mysql.c.in
  • ext/mysql.c.in.patch
  • ext/test.rb
  • README
  • Rakefile
  • docs/README.html has_rdoc: true homepage: http://mysql-win.rubyforge.org licenses: []

post_install_message:
rdoc_options:

  • --exclude
  • ext
  • --main
  • README require_paths:
  • ext required_ruby_version: !ruby/object:Gem::Requirement requirements:
    • - ">="
      • !ruby/object:Gem::Version version: 1.8.2 version: required_rubygems_version: !ruby/object:Gem::Requirement requirements:
    • - ">="
      • !ruby/object:Gem::Version version: "0" version: requirements: []

rubyforge_project: mysql
rubygems_version: 1.3.4
signing_key:
specification_version: 1
summary: A win32-native build of the MySQL API module for Ruby.
test_files: []

NARUSEさんからご指摘いただいたものは出力されていませんでした。
=end

#7

Updated by naruse (Yui NARUSE) almost 10 years ago

=begin
なるほど、たしかにそこからたどるのは難しいですね。

homepage: http://mysql-win.rubyforge.org
から飛んで、mysql-win、SCMリポジトリ、Local svn+http - fast but sparse、trunk、docs、README_ja.htmlとたどると、
http://mysql-win.rubyforge.org/svn/trunk/docs/README_ja.html
にたどり着くと、先のhttp://www.tmtm.org/mysql/ruby/にあるMySQL/Rubyと同じものであることがわかります。
=end

#8

Updated by oshida (Teruo Oshida) almost 10 years ago

=begin
押田です。

私も gem の MySQL/Ruby にハマった事があるのでコメントします。

結論としては、
ruby1.9 で MySQL/Ruby を使いたければ、
gem ではなくマニュアルでビルドする必要がある、
ということです。

問題は2つあって;
v2.7.3 は ruby1.8 + mswin32 用のバイナリパッケージである事
v2.8.1 は gems.rubyforge.org に置いてない

"msvcrt-ruby18.dll" を探しに行っていますよね。
ruby19 じゃなくて。

また、元来、Linux の人などは、
gem install mysql -v 2.7 -- --with-mysql-config=which mysql_config
などとしてインストールしたものです。

#RHEL は EPEL にバイナリがあるのでそれを利用するのが簡単。

=end

#9

Updated by stryh (Ryouhei Saita 斉田) almost 10 years ago

=begin

押田さん
コメントありがとうございます。
押田さんのおっしゃるマニュアルビルドをWindows環境下で「MySQL/Ruby」をビルドすればいいのでしょうか?
=end

#10

Updated by tommy (Masahiro Tomita) almost 10 years ago

=begin
とみたです。

ちと出遅れましたが、MySQL/Ruby の作者です。

On Sun, 2 Aug 2009 20:07:50 +0900
Ryouhei Saita 斉田 redmine@ruby-lang.org wrote:

押田さんのおっしゃるマニュアルビルドをWindows環境下で「MySQL/Ruby」をビルドすればいいのでしょうか?

他の方もかかれていますが、Ruby 1.9.1 では MySQL/Ruby 2.8.1 が必要です。
そのバイナリが入手できない場合は、自力でコンパイルする必要があります。
私は Windows の開発環境を持っていないので、その点についてはお助けできま
せん (__;

MySQL/Ruby 2.8.1 の gem は github に kwatch さんが公開しているものがあ
ります。

http://github.com/kwatch/mysql-ruby

これは MacOS 用に手を入れたものらしく、私の手元にある Linux ではコンパ
イルに失敗してしまいます。Windows でどうなるかはわかりません。

また、Ruby で書かれた、コンパイル不要の Ruby/MySQL というのもあります。
これの MySQL 5.x とか Ruby 1.9.x に対応したバージョン 3.0 を github に
公開しています。

http://github.com/tmtm/ruby-mysql

これは 2.8.1 とは互換はないのですが、require 'mysql' の後に、
reqiure 'mysql/compat' すれば、それなりに互換で使えるように作ったつもりです。

まだアルファ版ですが、よろしければ使ってみてください。

--
とみたまさひろ tommy@tmtm.org
3469 42CC 4D32 F53C AD98 65A5 8C37 FF09 69C1 6040

=end

Also available in: Atom PDF