运行 在工作数据库上恢复。怎么了?

Run restore on working database. What happens?

我运行时发生了什么:

zcat /mnt/Postgres/restoreFile.gz | psql my_db

在工作数据库上,在执行 ALTER TABLE 和其他标准操作后,duplicated keys 出现问题。当我停止它并尝试插入数据库时​​,由于 sequencesconstraints,我得到了 duplicates key 错误。似乎所有数据都在,但序列呢?该数据库到底发生了什么?

一个普通的 Postgres 备份由 table 设计(如 create table)和数据(如 insert)语句组成。如果你 运行 它两次,大多数设计语句都会失败。只要数据定义允许重复行,insert 语句就会成功。

因此,将数据库恢复到生产服务器通常会导致 table 中出现大量没有主键的重复行。备份后所做的一些设计更改(例如更改 table 的所有者)可能会被撤消。