From: "Y. Nobuoka" Date: 2011-08-10T06:38:13+09:00 Subject: [ruby-list:48300] Re: require 'dbi' の警告について 前川さん 信岡です。 私の方でろくに Windows 環境を作らずにごちゃごちゃ言っててもあれなので、 私の方でも windows に ruby-1.9.2-p290 をインストールしてみました。 結果としては、前川さんの環境と同じように segmentation fault が発生しました。 (毎回発生するわけでもないですし、どういう条件で発生するんでしょうね。。) 原因を調べましたが、先のメールで述べたような既知のバグ (?) である 「MySQL 5.1 で segmentation fault が発生する」 という問題ではないかと思います。 そこで、自前で MySQL/Ruby ライブラリのバージョン 2.8.2 を自前でビルドして それを使ってみることにしました。 その結果、segmentation fault が発生しなくなりました (おそらく)。 (segmentation fault が起こるかどうか試すのに使用したプログラムを メール末尾に付けておきます。) 私がビルドして gem パッケージにした mysql ライブラリを [1] においておきますので、 一度これを試してみてください。 [1] http://www.vividcode.info/project/ruby/mysql.html > 何度も書くようですが、Ruby192p180では、アクセスは問題ないです。 確かに別のパッチレベルでは発生しないというのは謎ですね。 --- segmentation fault が起こるかどうか試すために実行したスクリプト --- --- ( DB 構築は既に済ませているとする ) --- #! ruby -EUTF-8:UTF-8 # coding: UTF-8 require "dbi" 1000.times do |i| $stdout << '.' $stdout << " #{i+1}\n" if ( i + 1 ) % 50 == 0 begin dbh = DBI.connect( 'DBI:Mysql:mytest:localhost', 'xxxx', 'xxxx' ) dbh.do( 'CREATE TABLE aplist ( ttt INTEGER )' ) 200.times do |a| dbh.do( "INSERT INTO aplist VALUES ( #{a} )" ) end dbh.execute( 'SELECT * FROM aplist' ) do |res| while row = res.fetch do row end end dbh.do( 'DROP TABLE aplist' ) ensure dbh.disconnect if dbh end end -- 信岡 ゆう (NOBUOKA Yu)