[前][次][番号順一覧][スレッド一覧]

rails:3457

From: "=?ISO-2022-JP?B?GyRCQTBAbhsoQiAbJEIxRzBsGyhCICgbJEI7MEkpPUU5KTZIM3QbKEI=?= =?ISO-2022-JP?B?GyRCPDAycTxSGyhCIBskQkQ5OmpCJEElPWobKEIgGyRCQSVHdUlKGyhC?= =?ISO-2022-JP?B?GyRCPEFKXT5aSXQbKEIgGyRCSUo8QUpdPlolMCVrITwlVxsoQikg?= =?ISO-2022-JP?B?GyRCPGdHJBsoQg==?="@netforest.fdiary.net
Date: Wed, 30 Jun 2010 09:13:14 +0900
Subject: [rails:3457] MySQL DBI::libmysql.dllとの相性


前川です。宜しくお願いします。

Railsは、まだまだ、始めたばかりです。

MySQLをDBIで使うために、関連のインストールを行い、実行しましたが、Segmentation
fault が生じました。

libmysql.dllを色々試して、2028KBのlibmysql.dllであれば、使用できることが分
かりました。

libmysql.dllは、ruby.exeと同じフォルダ(ruby/bin)に入れています。

教えていただきたいのは、Ruby1.8.7 と libmysql.dl lとの相性です。

何故、2028KBの libmysql.dll 以外(2304KBlでしか試していませんが)で
は、Segmentation faultとなるのでしょうか??

固有のdllしか使えないのでしたら、DBI関連のgemファイルに含まれるのではな
いでしょうか??

ちなみに、2304KBのlibmysql.dllは、mysqlに含まれていたものです。

コード・デバッグ結果、バージョン等は、以下に記載しました。

宜しくお願いします。


#!D:/Ruby/bin/ruby.exe -Ks

require "dbi"

begin
  dbh = DBI.connect('DBI:Mysql:DB名:サーバ名', 'ユーザ名', 'パスワード')
  #sth = dbh.prepare("SHOW TABLES") #←OK
  sth = dbh.prepare("SELECT * FROM aplist")
  #sth = dbh.prepare("SHOW COLUMNS FROM aplist")
  #sth = dbh.prepare('DESCRIBE aplist')
  #sth = dbh.prepare("show databases") #OK
  puts dbh
  puts sth
  sth.execute
  puts 'count='+sth.rows.to_s #テーブル数のみ有効?

  count = 0
  sth.fetch { |row|
    p row
    count = count + 1
  }
  sth.finish
  puts 'increment count='+count.to_s
#DB例外発生時の処理
rescue DBI::DatabaseError => e
  p "An error occurred"
  p "Error code: #{e.err}"
  p "Error message: #{e.errstr}"
  #切断漏れしないようにensureでdisconnectします。
ensure
  dbh.disconnect if dbh
end

上記で、OKとあるのは、2304KBのlibmysql.dllを使用した時のものです。
それ以外(SELECT文、SHOW COLUMNS文等)は、すべて、Segmentation faultが発生
しました。

デバッグ記録は、以下です。

(rdb:1) s
D:/Ruby/lib/ruby/site_ruby/1.8/dbd/mysql/statement.rb:125:
indexed = (unique_key_flag | multiple_key_flag)
(rdb:1) s
D:/Ruby/lib/ruby/site_ruby/1.8/dbd/mysql/statement.rb:125:
indexed = (unique_key_flag | multiple_key_flag)
(rdb:1) s
D:/Ruby/lib/ruby/site_ruby/1.8/dbd/mysql/statement.rb:130:
@res_handle.fetch_fields.each {|col|
(rdb:1) s
D:/Ruby/lib/ruby/site_ruby/1.8/dbd/mysql/statement.rb:130: [BUG]
Segmentation fault
ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mswin32]


This application has requested the Runtime to terminate it in an unusual
way.
Please contact the application's support team for more information.

使用しているdbd(ダウンロードしたもの);;dbd-mysql-0.4.3.zip

使用しているdbi(ダウンロードしたもの);;dbi-0.4.3.zip

O/Sは、WINDOWS-XP、Rubyのバージョン等は、以下です。

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

D:\>ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mswin32]

D:\>gem list --local

*** LOCAL GEMS ***

actionmailer (2.3.4)
actionpack (2.3.4)
activerecord (2.3.4)
activeresource (2.3.4)
activesupport (2.3.4)
cgi_multipart_eof_fix (2.5.0)
daemons (1.0.10)
deprecated (2.0.1)
eventmachine (0.12.10)
fastthread (1.0.1)
gem_plugin (0.2.3)
linecache (0.43)
mongrel (1.1.5)
mysql (2.8.1)
rack (1.0.0)
rails (2.3.4)
rake (0.8.7)
ruby-debug-base (0.10.3)
ruby-debug-ide (0.4.5)
sinatra (0.9.4)
sqlite3-ruby (1.2.5)
thin (1.2.4)

D:\>


--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]