【问题标题】:Rails: Adding Foreign Key ConstraintRails:添加外键约束
【发布时间】:2016-12-04 19:12:05
【问题描述】:

我有一个join_table,目前有以下列:

     - id
     - table_a_id
     - table_b_id 

尝试为join_tabletable_a_id 添加外键约束,我生成以下迁移:

    class AddTableIdForeignKeyConstraintToJoinTable < ActiveRecord::Migration[5.0]  
      def change
        add_foreign_key :table_a, :join_table, column: :table_a_id, primary_key: "lng_id"
      end
    end

错误

    PG::UndefinedColumn: ERROR:  column "question_id" referenced in
    foreign key constraint does not exist 
    : ALTER TABLE "table_a" ADD CONSTRAINT 
      "fk_rails_4b0148d527"
      FOREIGN KEY ("question_id")
      REFERENCES "join_table" ("lng_id") 

问题
这条线是什么意思foreign key constraint does not exist? Rails 在哪里寻找foreign key

【问题讨论】:

  • 您的问题有解决方案吗?
  • 还没有@dkp。我得到了最初的错误,但我对引用的工作方式有点困惑。例如:现在我正在尝试将table_b 的外键约束添加到连接表并得到constraint "fk_rails_ff820b2696" for relation "join_table" already exists 的错误。这意味着add_foreign_key 方法并没有像我认为的那样做。所以现在正在努力理解。

标签: ruby-on-rails database postgresql


【解决方案1】:

错误的意思是表table_a中没有列question_id。您要添加外键的表 (join_table) 应该是第一个参数,主键应该指向 table_a 中的 id

【讨论】:

    【解决方案2】:

    根据add_foreign_key,第一个参数应该是外键所在的表,第二个参数应该是对应主键所在的表名。

    而且,您的错误表明外键不存在于应有的位置。

    尝试将迁移更改为:

    def change
        add_foreign_key :join_table, :table_a, column: :table_a_id, primary_key: "lng_id"
     end
    

    【讨论】:

      猜你喜欢
      • 2017-06-10
      • 2014-06-01
      • 1970-01-01
      • 2020-09-26
      • 2019-12-06
      • 1970-01-01
      相关资源
      最近更新 更多