windows - Docker:“pg_restore 输入文件似乎不是有效的存档”错误
问题描述
我使用以下命令备份了一个 PostgreSql 数据库,它创建了一个 sql 文件:
cmd /c 'docker exec -t <container-name> pg_dump <db_name> -U postgres -c
-v > C:\\backup\\<db_name>.sql'
但是,我无法使用以下命令恢复 sql 备份文件:
首先我删除并创建一个空数据库:
docker exec <container-name> bash -c "dropdb -U postgres <db_name>"
docker exec <container-name> bash -c "createdb -U postgres <db_name>"
然后恢复:
cmd /c "docker exec -i <container-name> pg_restore -C -U postgres -d
<db_name> -v < C:\\<db_name>.sql"
给出“pg_restore:错误:输入文件似乎不是有效的存档”错误。所以,
1.如何用sql文件恢复数据库?
2.如何在 Windows 的 Docker 中备份 PostgreSql db?
解决方案
纯文本pg_dump
是用 恢复的psql
,而不是用pg_restore
。
我不明白你为什么要在容器内运行它。在主机操作系统上安装 PostgreSQL 客户端并简化过程。此外,备份应该在与数据库不同的机器上。
推荐阅读
- python - SQLAlchemy 数据库中的反向引用属性错误
- python - 如何创建可以使用 var 改变自身的代码
- php - Laravel FormRequest 不读取表单数据类型请求
- c# - Create checkboxlist out of data model and store it back in ASP.NET Core MVC
- flutter - BackButton 和 BottomNavigationBar
- python - Send_keys 函数在 selenium -python 中不起作用
- java - 如何使用字符串数组创建按钮、标签和文本字段?
- php - 使用 TextField laravel Nova 将数据添加到资源
- java - 为什么当按钮溢出其他可点击元素时点击不起作用?
- python - TensorFlow 保存和加载不一致