pg_dump和pg_restore(DROP IF EXISTS)

  发布于 2023-01-19 10:04

我想要一个完全基于shell的解决方案来测试我的数据库,允许我通过运行终端命令将其恢复到一致状态.

我像这样转储我的数据库:

pg_dump -F c -b -f -i -h domain.edu -p 5432 -n myschema -U me mydatabase -W -f mydump.sql

然后我想恢复它:

pg_restore -h domain.edu -p 5432 -U me -d mydatabase -W mydump.sql

但它没有用,因为我遇到了很多这样的错误:

pg_restore: [archiver (db)] could not execute query: ERROR:  constraint "settings_person_id_fkey" for relation "settings" already exists
    Command was: ALTER TABLE ONLY settings
    ADD CONSTRAINT settings_learner_id_fkey FOREIGN KEY (person_id) REFERENCES pe...

基本上只有很多东西需要在重新添加之前先删除(DROP TABLE IF EXISTS与类型相同).

我怎么能用Postgres做到这一点?我不想使用psql控制台,只有linux终端.

1 个回答
  • 如果要将数据库还原到一致状态,建议您在还原转储之前删除并重新创建它:

    dropdb -h domain.edu -U me mydatabase
    createdb -h domain.edu -U me -T template0 mydatabase # adjust encoding/locale if necessary
    pg_restore -h domain.edu -p 5432 -U me -d mydatabase -W mydump.sql
    

    2023-01-19 10:06 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有