From: eiichi_maekawa@... Date: 2011-08-10T09:00:12+09:00 Subject: [ruby-list:48301] Re: require 'dbi' の警告について 前川です。 gemファイル、ありがとうございました。 Runy1.9.2p290で実施した結果が、以下です。 Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\*******>pik sw 192 290 C:\Documents and Settings\*******>d: D:\>cd ruby192p290 D:\Ruby192p290>gem list mysql *** LOCAL GEMS *** mysql (2.8.1 x86-mingw32) D:\Ruby192p290>gem uninstall mysql You have requested to uninstall the gem: mysql-2.8.1-x86-mingw32 dbd-mysql-0.4.4 depends on [mysql (>= 0)] If you remove this gems, one or more dependencies will not be met. Continue with Uninstall? [Yn] y Successfully uninstalled mysql-2.8.1-x86-mingw32 #← mysql-2.8.1-x86-mingw32 をアンインストール D:\Ruby192p290>gem install mysql-2.8.2-x86-mingw32.gem --no-ri --no-rdoc --local #←信岡さんよりのgemファイルをインストール Successfully installed mysql-2.8.2-x86-mingw32 1 gem installed D:\Ruby192p290>cd D:\Apache2.2\htdocs\ruby_prg\em_ruby\em_db D:\Apache2.2\htdocs\ruby_prg\em_ruby\em_db>ruby -v ruby 1.9.2p290 (2011-07-09) [i386-mingw32] D:\Apache2.2\htdocs\ruby_prg\em_ruby\em_db>ruby dbi_mysql_connect2.rb #←Rubyより、読み込みのプログラムを実行 D:/Ruby192p290/lib/ruby/gems/1.9.1/gems/deprecated-2.0.1/lib/deprecated.rb:199: warning: already initialized constant Deprecate # 出力されたデータ抜粋(最終行のデータのみ) ["12284-D001", "", "", "", "", "", "", "", "", "", "", "0", "0", "0", "0", "0", "tsuyoshi_watanabe@mhi.co.jp", "shingo_iyoshi@mhi.co.jp", "minoru_hiroshige@mhi.co.jp", "takafumi_mori@mhi.co.jp", "takashi_mita@mhi.co.jp", "936e95d3208d84", "88e48b6720904c8ce1", "9c418f64208ec0", "90582097b28e6a", "8e4f93632097b28e6a", "1", "1", "0", "0", "0"] 結果、Mysqlのデータを取り出せました。 > D:/Ruby192p290/lib/ruby/gems/1.9.1/gems/deprecated-2.0.1/lib/deprecated.rb:199: warning: already initialized constant Deprecate のワーニングが、出てるのですが、この分は、無視してもいいですよね。 ありがとうございました。 "Y. Nobuoka" wrote on 2011/08/10 06:38:13: > 前川さん > > 信岡です。 > > 私の方でろくに 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) >