Подтвердить что ты не робот

PGError: ERROR: текущая транзакция прерывается

Использование: Rails 3.0.3 и Heroku с Postgresql.

Я получаю множество Исключений, таких как этот:

A ActiveRecord::StatementInvalid occurred in home#index:

  PGError: ERROR:  current transaction is aborted, commands ignored until end of transaction block
: SELECT "calculation_types".* FROM "calculation_types"
  .bundle/gems/ruby/1.9.1/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract_adapter.rb:202:in `rescue in log'

происходящее во всем моем приложении, но всегда, когда я выполняю как в этом случае

calculation_type = CalculationType.find(params[:id])

или аналогичные, супер простые, запросы к базе данных.

Мой список драгоценных камней (с тех пор, как я загрузил его в Heroku):

   Installing rake (0.9.2.2) 
   Installing abstract (1.0.0) 
   Installing activesupport (3.0.3) 
   Installing builder (2.1.2) 
   Installing i18n (0.6.1) 
   Installing activemodel (3.0.3) 
   Installing erubis (2.6.6) 
   Installing rack (1.2.5) 
   Installing rack-mount (0.6.14) 
   Installing rack-test (0.5.7) 
   Installing tzinfo (0.3.33) 
   Installing actionpack (3.0.3) 
   Installing mime-types (1.19) 
   Installing polyglot (0.3.3) 
   Installing treetop (1.4.10) 
   Installing mail (2.2.19) 
   Installing actionmailer (3.0.3) 
   Installing arel (2.0.10) 
   Installing activerecord (3.0.3) 
   Installing activeresource (3.0.3) 
   Installing acts_as_tree_rails3 (0.1.0) 
   Installing breadcrumbs_on_rails (2.2.0) 
   Installing yamler (0.1.0) 
   Installing configatron (2.9.1) 
   Installing daemons (1.1.9) 
   Installing eventmachine (1.0.0) with native extensions 
   Installing exception_notification (2.4.1) 
   Installing friendly_id (4.0.0.beta12) 
   Installing i18n_routing (0.6.1) 
   Installing thor (0.14.6) 
   Installing railties (3.0.3) 
   Installing jquery-rails (1.0.19) 
   Installing pg (0.14.1) with native extensions 
   Installing postgres-pr (0.6.3) 
   Installing rack-rewrite (1.0.2) 
   Installing rack-timeout (0.0.3) 
   Using bundler (1.0.7) 
   Installing rails (3.0.3) 
   Installing thin (1.5.0) with native extensions 
   Installing time_diff (0.2.2) 

Факты

  • Ошибки являются прерывистыми, и я не могу их воспроизвести.
  • Кажется, что в большинстве случаев, когда поисковые роботы пытаются получить доступ к странице

Вопросы

Q1. Я даже не знаю, с чего начать стрельбу по этому поводу (какие другие части моего кода вам понадобятся?). Какими должны быть мои первые шаги?

Q2. Существуют ли какие-либо известные проблемы с Rails 3.0.3 и Postgresql?

  • Что еще вам нужно, чтобы помочь мне справиться с стрельбой?
4b9b3361

Ответ 1

Я только что перезапустил свой сервер. Это отменило транзакцию.

Ответ 2

Эта ошибка никогда не является вашей реальной проблемой. Это происходит потому, что вы отправляете оператор в транзакцию, которая уже не выполнена из-за ошибки восходящего потока. Если вы увидите много этих ошибок, вы хотите вернуться в свой журнал, чтобы найти первую ошибку в потоке, и это будет другая ошибка.

Найдите это и исправьте. Обратите внимание, что это означает, что вы продолжаете транзакции после других ошибок. Другие ошибки заключаются в том, что проблемы лежат.

Ответ 3

Можете ли вы выполнить CalculationType.all или CalculationType.first без ошибок?

Если вы можете получить доступ к некоторым данным из этой модели, то переиндексирование вашей таблицы может устранить проблему, попробуйте следующее:

REINDEX TABLE <table_name>

или в консоли rails:

ActiveRecord::Base.connection.execute("reindex table <table_name>")

У меня была аналогичная проблема некоторое время назад, надеюсь, что это поможет.