gpt4 book ai didi

postgresql - 为什么 Docker 中的 pg_restore 段错误?

转载 作者:行者123 更新时间:2023-12-04 02:31:31 28 4
gpt4 key购买 nike

我正在 docker 容器内测试我的 postgres 数据库的备份/恢复过程。
我像这样转储我的数据库:

$ docker exec -ti my_postgres_container pg_dump -Fc -U postgres > db.dump
之后,我尝试像这样恢复它:
$ docker cp db.dump my_postgres_container:/db.dump
$ docker exec -ti my_postgres_container pg_restore -U postgres -c -d postgres db.dump
命令返回没有输出或错误,但没有任何 react 。
因此,我尝试像这样手动恢复它:
$ docker cp db.dump my_postgres_container:/db.dump
$ docker exec -ti my_postgres_container bash
root@fdaad610bee3:/# pg_restore -U postgres -c -d postgres db.dump
Segmentation fault (core dumped)
为什么在尝试读取我的数据库转储时 pg_restore 出现段错误?

最佳答案

分析:
该问题是由转储数据库时损坏引起的。 pg_dump产生二进制输出。此输出首先通过 Docker 容器的 stdout然后重定向到主机上的文件中。在途中的某个地方,非 ASCII 字节已损坏。
解决方案:
pg_dump写入 Docker 容器内的文件,然后将其复制到主机:
正确的倾销程序:

docker exec -ti my_postgres_container bash -c 'pg_dump -Fc -U postgres > /db.dump'
docker cp my_postgres_container:/db.dump db.dump
正确的恢复过程:
docker cp db.dump my_postgres_container:/db.dump
docker exec -ti my_postgres_container pg_restore -U postgres -c -d postgres db.dump

关于postgresql - 为什么 Docker 中的 pg_restore 段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63934856/

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