程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了奇怪的 Rails 迁移行为 - 重复 add_references 命令并因 ActiveRecord::StatementInvalid: PG::DuplicateColumn 而失败大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决奇怪的 Rails 迁移行为 - 重复 add_references 命令并因 ActiveRecord::StatemenTinvalid: PG::Duplicatecolumn 而失败?

开发过程中遇到奇怪的 Rails 迁移行为 - 重复 add_references 命令并因 ActiveRecord::StatemenTinvalid: PG::Duplicatecolumn 而失败的问题如何解决?下面主要结合日常开发的经验,给出你关于奇怪的 Rails 迁移行为 - 重复 add_references 命令并因 ActiveRecord::StatemenTinvalid: PG::Duplicatecolumn 而失败的解决方法建议,希望对你解决奇怪的 Rails 迁移行为 - 重复 add_references 命令并因 ActiveRecord::StatemenTinvalid: PG::Duplicatecolumn 而失败有所启发或帮助;

我正在运行 Rails 5.2.4.4,发现当我的用户迁移中列出了两个 add_references 时出现了最奇怪的行为。即使它们是不同表引用的唯一行,输出显示第一个重复,然后由于重复列而失败。如果我切换语句,它只会导致另一个 add_reference 重复并失败:

迁移:

def change
  add_column :users,:first_name,:string
  add_column :users,:last_name,:authentication_token,:LOCATIOn,:is_admin,:Boolean,default: false
  add_column :users,:account_active,default: true
end

add_reference :users,:tagging,type: :uuID,foreign_key: true,null: true
add_reference :users,:tenant,foreign_key: true

add_index :users,:created_at

导致此错误:

-- add_reference(:users,{:type=>:uuID,:foreign_key=>true,:null=>truE})
-- add_reference(:users,:null=>truE})
rails aborted!
ActiveRecord::StatemenTinvalID: PG::Duplicatecolumn: ERROR:  column "tagging_ID" of relation "users" already exists

如果我切换 add_references 列:

  add_reference :users,foreign_key: true
  add_reference :users,null: true

我反而得到:

-- add_reference(:users,:foreign_key=>truE})
-- add_reference(:users,:foreign_key=>truE})
rails aborted!
ActiveRecord::StatemenTinvalID: PG::Duplicatecolumn: ERROR:  column "tenant_ID" of relation "users" already exists

提前致谢。

解决方法

发现问题...

我已将 add_references 代码放在 def change 块之外。

移动它并全部修复。

大佬总结

以上是大佬教程为你收集整理的奇怪的 Rails 迁移行为 - 重复 add_references 命令并因 ActiveRecord::StatementInvalid: PG::DuplicateColumn 而失败全部内容,希望文章能够帮你解决奇怪的 Rails 迁移行为 - 重复 add_references 命令并因 ActiveRecord::StatementInvalid: PG::DuplicateColumn 而失败所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。