簡體   English   中英

PG::InFailedSqlTransaction: 錯誤: 當前事務被中止,命令被忽略直到事務塊結束

[英]PG::InFailedSqlTransaction: ERROR: current transaction is aborted, commands ignored until end of transaction block

我正在嘗試運行rake db:migrate但遇到此錯誤:

PG::InFailedSqlTransaction: 錯誤: 當前事務被中止,命令被忽略直到事務塊結束 /20150526112018_rename_inquiries_to_mandates.rb:15:in change' /Users/alirezanobakht/.rbenv/versions/2.7.5/bin/bundle:23:in加載'/Users/alirezanobakht/.rbenv/versions/2.7.5/bin/bundle:23:in `'

另外,我在遷移文件中的代碼是:

 rename_column :company_inquiries, :inquiry_id, :mandate_id
 add_index :company_inquiries, :mandate_id rescue nil    
 create_join_table :companies, :mandates do |t|
          t.index [:company_id, :mandate_id]
          t.index [:mandate_id, :company_id]
     end

注意:在將 Rails 版本更新到 6.1 后出現此錯誤,可能原因是在“rename_column”之后寫入“add_index”

似乎是因為add_index之后的這個rescue nil 你有這樣的流程:

  • 遷移開始事務
  • rename_column - 執行一些 SQL - OK
  • add_index - 由於某種原因失敗並引發異常,它應該中止遷移,但您正在拯救並忽略異常,所以它只是繼續
  • create_join_table - 它嘗試執行 SQL 語句,但您的事務已在上一步中中斷,因此引發PG::InFailedSqlTransaction異常

不太清楚為什么add_index失敗,乍一看應該可以工作,但是嘗試刪除rescue nil ,你應該得到真正的錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM