2011年8月10日

[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)


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




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