2012-09-25 30 views
20

Sử dụng: Rails 3.0.3 và Heroku với Postgresql.PGError: ERROR: giao dịch hiện tại bị hủy bỏ

tôi đã nhận được rất nhiều trường hợp ngoại lệ như thế này một:

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' 

occuring althroughout ứng dụng của tôi nhưng luôn luôn khi tôi thực hiện như trong trường hợp này

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

hoặc tương tự, siêu đơn giản, database- yêu cầu.

danh sách của tôi về đá quý (từ khi tôi tải lên nó để 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) 

kiện

  • Các lỗi là không liên tục và tôi không thể tái tạo chúng.
  • Nó dường như xảy ra ở hầu hết thời gian khi chương trình công cụ tìm kiếm cố gắng truy cập vào trang

Câu hỏi

Q1. Tôi thậm chí không biết bắt đầu từ đâu khi gặp sự cố khi chụp ảnh này (bạn cần những phần nào khác trong mã của mình?). Điều gì sẽ là bước đầu tiên của tôi?

Q2. Có bất kỳ vấn đề được biết đến với Rails 3.0.3 và Postgresql?

  • Còn điều gì khác bạn cần để giúp tôi gặp sự cố khi quay?
+0

Xóa ':' trước 'params', nó sẽ đọc' calculate_type = CalculationType.find (params [: id]) ' – nmott

+0

Cảm ơn, nhưng đó thực sự chỉ là một kiểu o trong văn bản (tôi không sao chép và dán) để không thực sự tồn tại trong mã. Tôi đã xóa nó khỏi câu hỏi của tôi ngay bây giờ. – Christoffer

+0

nếu u r sử dụng ActiveRecord :: Giao dịch sau đó thanh toán http://apidock.com/rails/ActiveRecord/Transactions/ClassMethods –

Trả lời

14

Lỗi này không bao giờ là vấn đề thực sự của bạn. Nó xảy ra bởi vì bạn gửi một tuyên bố trong một giao dịch đã thất bại vì lỗi ngược dòng. Nếu bạn thấy nhiều lỗi này bạn muốn quay lại nhật ký của mình để tìm lỗi đầu tiên trong luồng và đó sẽ là lỗi khác.

Tìm và sửa lỗi này. Lưu ý rằng điều này chỉ có nghĩa là bạn đang tiếp tục giao dịch sau các lỗi khác. Các lỗi khác là nơi các vấn đề nằm.

+10

Tôi cần chạy runke db: test: chuẩn bị sửa lỗi của tôi. Tôi hi vọng điêu nay se giup được ai đo. –

+1

Tôi biết lý do. Nhưng làm thế nào để vượt qua nó? Làm thế nào nói giao dịch chỉ để dừng lại và thoát? Tôi không cần tìm lý do. Chỉ cần thoát khỏi trạng thái của nó. – Green

0

Bạn có thể thực hiện CalculationType.all hoặc CalculationType.first không có lỗi không?

Nếu bạn có thể truy cập vào một số dữ liệu từ mô hình này, sau đó reindexing bảng của bạn có thể khắc phục vấn đề, hãy thử này:

REINDEX TABLE <table_name> 

hoặc trong đường ray console:

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

Tôi đã có một vấn đề tương tự một thời gian trước, hy vọng nó sẽ giúp.

18

Tôi vừa khởi động lại máy chủ của mình. Điều này đã hủy giao dịch.

Các vấn đề liên quan