【问题标题】:Constraint Issue When Loading .sql file into Postgres DB将 .sql 文件加载到 Postgres DB 时的约束问题
【发布时间】:2018-07-22 01:17:51
【问题描述】:

我对整个生产数据库执行了pg_dump,并尝试将其本地上传到新迁移的干净 Postgres 数据库。当我执行psal db_name < data.sql 时,我会收到这样的错误

insert or update on table "vehicle_vehicle" violates foreign key constraint "vehicle_vehi_vehicle_make_id_265a8146_fk_vehicle_vehiclemake_id"
DETAIL:  Key (vehicle_make_id)=(788) is not present in table "vehicle_vehiclemake".

我的问题是:

  1. 当尝试加载具有外键的表,而另一个表具有尚未上传的外键关系时,Postgres 是否会停止正在执行的操作并开始加载该表?

  2. 加载数据如何解决这个问题?用户是否需要逐表转储数据,一次加载一个?

【问题讨论】:

  • 好吧,只是给你一个想法,你可以通过执行ALTER TABLE table_name DISABLE TRIGGER ALL来禁用外键约束。但不要忘记稍后启用它们。请注意,您可能会弄得一团糟,但如果您确定数据的完整性,那么使用它应该是安全的。

标签: django postgresql relational-database psql


【解决方案1】:

使用pg_restore--clean 从头开始​​恢复您的数据库。如果以下是完整转储,则应在设置外键之前插入数据,以免出现问题。

【讨论】:

    猜你喜欢
    • 2021-12-03
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    相关资源
    最近更新 更多