2012-06-10 2 views
0

을 사용하여 다른 결과 :루비 Mysql2 : 나는 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 

내가 SELECT의 수를 얻을 첫 번째 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을 사용하여 추가하면 계산 속도가 빨라집니다. 가장 좋은 것은 여기에 실제 코드를 게시하는 것입니다. 내가 한 번에 또는 다른 것을 이런 짓을했기 때문에 나는 알고있다.

관련 문제