2012-01-07 14 views
1

私が機能を持っている:を変化させたSQLクエリ結果

def self.run_all_scheduled_reports 
      scheduled_queries = Reports.find(
       :all, 
       :joins=> 'INNER JOIN `expected_times` 
       ON (`reports`.`report_id` =`expected_times`.`report_id`)') 

      if scheduled_queries.empty? 
       print "No reports to run at this time ("+Time.now.to_s+")" 
      else 
       caught_exception = false 
       ActiveRecord::Base.connection.execute("SET SESSION WAIT_TIMEOUT=2400"); 
       scheduled_queries.each do |query| 
        begin 
         print "Running report ("+query[:id].to_s+")...\n" 
         self.run_report(query[:id]) 
        rescue Exception => e 
         caught_exception = true 
         print e 
        end 
       end 
       raise "At least one query resulted in an Exception!" if caught_exception 
      end 
     end 

は奇妙なことは、私は連続して(スクリプト/ランナー-eを経由して...)この関数を実行すると、結果が変化する、ということです。場合によっては約30のレポートが印刷されることもあります(場合によっては、結果がまったく返されないこともあります)。皆さんは何が起こっているか考えていますか?私のDBはMYSQLです。また

、私は一部のJOIN省略した場合、そのはかなりうまく働い「開発」するか、環境を変更した場合。

+0

のおかげでは、データベースを変更する何か他のものですか? MySQLシェルでクエリを試しましたか? –

+0

デバッガモードでコードをステップ実行しようとしましたか?私は例外がいくつかの奇妙なケースで静かにレールスタックで食べられるケースを見てきました。 – Nick

+0

@muistooshort - データベースそのものがサーバーに存在するため、読み書きが可能性が高いですが、上記のテーブルにアクセスするのは私だけです。はい、iveはMYSQLの生のクエリをフィードしようとしました - 結果は良いです。 –

答えて

1

私はどうやら、私のレールはデシベル取引を行うために別の層/フレームワークを使用するように設定されているので、矛盾が発生し、問題を解決しました。このミドルレイヤーは2つの別々のMYSQLボックスから無作為に読み込まれますが、これは同期していないことが判明しました。一度私は2つのボックスを同期され、問題は修正されました。すべてのヘルプ

関連する問題