postgresql - 在 docker compose 中使用 pg_restore 恢复数据库时出错
问题描述
我运行以下命令来创建转储文件
sudo docker-compose up -d db
sudo docker exec –i container_name pg_dump –username username database_name > desired_path/dump.sql
docker-compose.override.yml
然后我将文件添加到文件中的现有卷中
version: '3.7'
services:
db:
container_name: seqdb-db-container
volumes:
- ./dump.sql:path_to_volume_used_by_container
ports:
- 5432:5432
最后我跑
sudo docker exec –i container_name psql –username username database_name < path_to_dump_file
我收到以下错误:
pg_restore: [archiver] input file appears to be a text format dump. Please use psql.
我想在docker exec pg_restore
不安装的情况下使用psql
。是否有解决方案,或者我是否错误地安装了我的卷?
解决方案
-F format
--format=format
选择输出的格式。格式可以是以下之一:p
plain
输出纯文本 SQL 脚本文件(默认)。
因此,默认输出格式pg_dump
是纯文本 SQL 文件(它看起来是您所期望的,因为您调用了 output dump.sql
)
现在来自pg_restore 的文档
pg_restore 是一个实用程序,用于从 pg_dump 创建的非纯文本格式之一的存档中恢复 PostgreSQL 数据库。
因此input file appears to be a text format dump. Please use psql
,应该根据您的操作预期错误。pg_restore
不支持恢复纯文本转储 - 恢复您应该使用的转储psql
(根据错误)。
快速的解决方案是在使用时请求非纯文本格式pg_dump
(例如--format=custom
)。但是,我对您不愿意使用感到有些困惑psql
?
推荐阅读
- apex - 在 SOQL 中,我如何获得组数的平均值?
- alpine.js - AlpineJS:如何将 x-for 变量传递给 x-data 函数
- c# - Xamarin.Android.Common.Debugging.targets(604,5):错误 XA0010:没有可用的设备
- python - Python 问题:不支持的格式,或损坏的文件:预期的 BOF 记录;找到 b'\n
以下代码不起作用并显示错误。任何人都可以提出任何解决方案吗?请注意,excel 文件格式为 xls。当我手动打开文件时,它会显示以下消息。
问候, 埃克拉姆
- ios - iOS Swift URLSession POST请求因慢速API调用而重复
- java - .lclass 扩展名是什么
- python - 我现在可以列出一个目录和所有子目录我想在该数据结构中搜索特定单词并替换它们
- python - matplotlib plot 更改 datetime64 的日期顺序
- java - 将 JavaFX TextArea 的输入打印到控制台会出现错误
- java - 在 JUnit 的 for 循环中模拟 if 条件