【问题标题】:Broken foreign key constraint prevents deleting损坏的外键约束阻止删除
【发布时间】:2019-06-15 00:37:45
【问题描述】:

我在尝试删除记录时遇到错误:

[2] pry(main)> d = Deal.last
[3] pry(main)> d.delete                                                                                                                                           
ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR:  update or delete on table "deals" violates foreign key constraint "fk_rails_78857af2ef" on table "origin_airports"

我在 SO 上找到了一个答案,导致我将 has_many :origin_airports, dependent: :destroy 添加到我的 Deal 模型中,这解决了问题。

嗯,它上周解决了问题,然后又回来了。如果它有所作为,这是自上周以来创建的记录,尽管我无法想象这意味着什么。我不认为我的代码自从我上次能够删除以来根本没有改变(只是在为数据库做种)。

我尝试通过新的迁移添加它:add_foreign_key :origin_airports, :deals, column: :deal_id, on_delete: :cascade

这不起作用,但我可能没有正确掌握 add_foreign_key 调用中的哪个列/表。

【问题讨论】:

    标签: ruby-on-rails activerecord database-migration


    【解决方案1】:

    使用销毁,

    d = Deal.last
    d.destroy
    

    delete 只会删除父记录,如果它有子记录它不会被删除,如果你使用销毁它会删除子记录和父记录,所以如果你删除父记录,则没有子记录那个孤儿

    【讨论】:

      猜你喜欢
      • 2021-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      相关资源
      最近更新 更多