gpt4 book ai didi

postgresql - pg_restore 后缺少约束

转载 作者:行者123 更新时间:2023-11-29 14:20:15 25 4
gpt4 key购买 nike

转储表并将其导入另一个 postgres 数据库后,约束丢失。

我用它来转储:

    pg_dump --host=local --username=user -W --encoding=UTF-8 -j 10 --file=dump_test --format=d -s --dbname=mydb -t addendum

要导入的内容:

    pg_restore -d myOtherdb --host=local -n public --username=user -W --exit-on-error --format=d -j 10 -t addendum dump_test/

我在生成的 toc.dat 中看到的是这样的:

    ADD CONSTRAINT pk_addendum PRIMARY KEY (addendum_id);
> ALTER TABLE ONLY public.addendum DROP CONSTRAINT pk_addendum;

这看起来像是在创建和销毁 PK,但我不确定我的解释是否正确,因为文件是二进制文件。

编辑:我正在使用 PostgreSQL 9.3

最佳答案

来自documentation :

Note: When -t is specified, pg_dump makes no attempt to dump any other database objects that the selected table(s) might depend upon. Therefore, there is no guarantee that the results of a specific-table dump can be successfully restored by themselves into a clean database.

因此你有一些公认的没有吸引力的选择:

  1. 您可以手动重建约束,尤其是当您仍然拥有创建约束的 DDL 时。
  2. 您可以对文本执行数据库范围的pg_dump,从那里获取约束 DDL,请参阅第 1 步。
  3. 您可以执行数据库范围的pg_dump,然后将其完全恢复。

关于postgresql - pg_restore 后缺少约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30804613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com