如果我在恢复数据库之前没有清空它会发生什么情况?
我面临以下问题:
恢复之前:一个表没有主键,并且有一行 id 为 1。
恢复后:恢复该特定表后,它有两行 id 等于 1。
我不知道为什么会发生这种情况?可能是因为在恢复数据库之前没有清空数据库。
谢谢。
答案1
此行为将根据您从哪种数据集恢复以及您使用哪种方法执行恢复而有所不同。添加这些详细信息将获得更好的答案。
不过,根据您提供的信息,您的恢复过程似乎只是简单地插入数据,并且您的 id 列没有唯一约束。因此,Postgres 没有理由不允许您的 ID 列具有重复值。
如果您的备份包含所需的数据库状态,最好在恢复之前删除并重新创建现有数据库。在您的 ID 列上添加唯一约束可能也是不错的选择。如果您需要它是唯一的,这不仅可以保护您免受此类操作错误的影响,还可以保护您的应用程序中的编程错误。
有关 Postgres 约束的更多信息:https://www.postgresql.org/docs/current/ddl-constraints.html