我有一个生产数据库的转储,我可以使用以下方法在我的 docker 容器中轻松恢复它:docker exec -it my_db_container pg_restore --user=my_user --dbname=dbname sql/current.dump
.一切正常,数据就在这里。
但是当我将我的本地数据库从 docker 中重新转储回docker exec -it my_db_container -U my-user -F c -b dbname > docker/db/current_stripped.dump
项目文件夹时,我的转储文件被创建(具有适当的大小和内容(,但由于错误,我无法使用它再次将其还原(docker exec -it whasq-db pg_restore --user=my-user --dbname=dbname sql/current_stripped.dump
(到新的数据库:pg_restore: [custom archiver] could not read from input file: end of file
但是还原命令与生产环境中使用的相同(生产中的my_user
除外(。
我遇到了同样的问题,并按如下方式解决了它。我切换到-f
或--file
选项而不是管道(取自 https://stackoverflow.com/a/51073680/6593069(。我在容器内创建了转储文件,然后将其复制到我的主机。
这意味着在您的情况下:
docker exec -it my_db_container -U my-user -F c -b dbname -f current_stripped.dump
docker cp my_db_container:current_stripped.dump .