繁体   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