2012-06-10 30 views
0

不同的結果:紅寶石Mysql2:我使用的方法.Count之間的mysql2查詢結果使用計數法

我的代碼:

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我獲得選擇的數結果行如預期。但對於第二個,我獲得(有時!)不同的值:


我的結果:

$ 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 <[email protected]>, Michal Papis <[email protected]> [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) 

有人有任何想法爲什麼會發生?

謝謝

+2

聽起來像結果正在被修改。你能發佈實際的代碼嗎?您發佈的內容在語法上無效。 – d11wtq

+0

謝謝,我已更新我的代碼。運行這段代碼給了我相同的結果,有時候我有很好的答案,有時候是一個大整數 – user1447891

回答

0

檢查您=與==。另外,第一個結果是一個數組。如果您通過執行某種.to_s或加入並將其放回到相同變量(例如results = results.join)中來更改爲字符串,則長度將會改變。如果使用results += results + another_array錯誤地將元素添加到數組中,那麼您的計數將快速增加。最好是在這裏發佈你的真實代碼。我知道,因爲我曾經這樣或那樣做過其中的一些。