【发布时间】:2021-06-01 01:14:40
【问题描述】:
我想对表运行更新查询,但在此之前我想确保我可以恢复表以防查询出错。因此,由于还原不起作用,我认为是一个简单的过程变得困难。
我正在使用 PgAdmin3,在我的桌子上我右键单击并选择“备份” 在文件选项中,我选择自定义。我没有选择任何压缩、编码或角色名称,在转储选项中我只选择“部分/数据”。备份字符串看起来像这样:
pg_dump.exe --host localhost --port 5432 --username "postgres" --no-password --format custom --section data --verbose --file "D:\TEMP\TableBackup.backup" --table "mytable" "myDatabase"
然后我立即通过恢复它来测试此备份,并选择“自定义或 Tar”的文件名和格式,并且没有选择其他恢复选项。
pg_restore.exe --host localhost --port 5432 --username "postgres" --dbname "myDatabase" --no-password --table myTable --schema mySchema --verbose "D:\TEMP\TableBackup.backup"
并返回以下错误:
pg_restore: connecting to database for restore
pg_restore: implied data-only restore
pg_restore: processing data for table "myTable"
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 2305; 0 18581 TABLE DATA myTable mySchema
pg_restore: [archiver (db)] COPY failed for table "myTable": ERROR: duplicate key value violates unique constraint "myTemplate_pk"
DETAIL: Key (oid)=(618001) already exists.
CONTEXT: COPY myTable, line 1
pg_restore: setting owner and privileges for TABLE DATA myTable
WARNING: errors ignored on restore: 1
Process returned exit code 1.
什么是重复键?
我该如何处理?
OID=618001 是怎么回事? 我希望恢复整个表,包括 OID,那么为什么这个字段会出错? 我原以为它会恢复一切?
提前致谢 达兹
【问题讨论】:
-
在事务中运行
UPDATE,如果它“变坏”则回滚。 -
这是什么意思,我该怎么做?
标签: postgresql database-backups