![](/img/trans.png)
[英]ERROR: current transaction is aborted, commands ignored until end of transaction block, Ruby on Rails
[英]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 - OKadd_index
- 由於某種原因失敗並引發異常,它應該中止遷移,但您正在拯救並忽略異常,所以它只是繼續create_join_table
- 它嘗試執行 SQL 語句,但您的事務已在上一步中中斷,因此引發PG::InFailedSqlTransaction
異常不太清楚為什么add_index
失敗,乍一看應該可以工作,但是嘗試刪除rescue nil
,你應該得到真正的錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.