Изменяющийся результат SQL-запроса в Ruby On Rails - PullRequest
1 голос
/ 07 января 2012

У меня есть функция:

    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 отчетов, а иногда только 15 (а иногда вообще никаких результатов не возвращается).Ребята, вы понимаете, что происходит?Моя БД - MYSQL.

Кроме того, если я изменяю среду на "разработку" ИЛИ если я пропускаю часть JOIN, она работает довольно хорошо.

1 Ответ

1 голос
/ 17 января 2012

Я только что решил проблему, несоответствие происходит потому, что, по-видимому, мои рельсы настроены на использование отдельного слоя / каркаса для выполнения транзакций БД.Этот средний уровень случайным образом читает из 2 отдельных блоков MYSQL, которые оказались не синхронизированы.Как только я синхронизировал 2 коробки, проблема была исправлена.Спасибо за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...