mysql2 クエリの結果で .count メソッドを使用しています。
私のコード:
require "mysql2"
hostname='db.xxxxx.xxx'
port='3306'
username='xxxxxx'
password='xxxxxxxxxxxxxxxxxxxxxxxxxx'
database='xxx'
dbh = Mysql2::Client.new(:host=> hostname, :username=> username, :password=> password, :database=> database, :port=> port.to_f, :database_timezone=> :utc, :application_timezone => :local)
results=dbh.query("SELECT * FROM xxx")
p results.count
i=0
results.each do |result|
i=i+1
end
p results.count
最初の results.count で、期待どおりの SELECT 結果行の数を取得します。しかし、2 番目のものについては、(時々!) 別の値を取得します。
私の結果:
$ ruby test_count.rb
4942
4942
$ ruby test_count.rb
4942
24773520
$ ruby test_count.rb
4942
37442208
私の設定:
$ rvm --version
rvm 1.13.4 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]
$ ruby --version
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
$ gem list
*** LOCAL GEMS ***
Ascii85 (1.0.1)
bundler (1.1.3)
curb (0.8.0)
mime-types (1.18)
mysql (2.8.1)
mysql2 (0.3.11)
pdf-reader (1.1.1)
prawn (0.12.0)
prawn-core (0.8.4)
rake (0.9.2.2)
ruby-filemagic (0.4.2)
ruby-rc4 (0.1.5)
rubygems-bundler (0.9.2)
RubyInline (3.11.2)
rvm (1.11.3.3)
ttfunk (1.0.3)
ZenTest (4.8.0)
誰かがなぜこれが起こるのか考えていますか?
ありがとう