こんにちは、金井です。
ruby-mysql の list_dbs を呼び出すと、それ以降のクエリがエラーに
なるという現象が出ています。
環境は、
ruby 1.8.1 (2003-12-25) [i386-mswin32]
MySQL 4.0.17
ruby-mysql-0.2.2
Windows2000(SP4)
で、以下の mysql-test.rb というスクリプトを動かすと、
-----------------------------------------------------------
#!/usr/local/bin/ruby
require 'mysql'
my = Mysql.new( "localhost", "root", "XXXXX", "mysql" )
dbs = my.list_dbs()
puts "//// #{dbs.inspect}"
dbs = []
my.query( "show databases" ).each { | row | dbs << row[0] }
puts "//// #{dbs.inspect}"
my.close
-----------------------------------------------------------
次のようなエラーが出ます。show databasesの代わりにuseとかselect
で試しても同じエラーになります。
-----------------------------------------------------------
c:/usr/local/lib/ruby/site_ruby/1.8/mysql.rb:490:in `error':
Commands out of sync; You can't run this command now (Mysql::Error)
from c:/usr/local/lib/ruby/site_ruby/1.8/mysql.rb:427:in `command'
from c:/usr/local/lib/ruby/site_ruby/1.8/mysql.rb:158:in `real_query'
from c:/usr/local/lib/ruby/site_ruby/1.8/mysql.rb:272:in `query'
from mysql-test.rb:8
-----------------------------------------------------------
--
金井 隆 (KANAI Takashi)
kanai / nn.iij4u.or.jp