gpt4 book ai didi

postgresql - 如果外键所在的表不存在,如何删除外键?

转载 作者:行者123 更新时间:2023-11-29 12:27:50 25 4
gpt4 key购买 nike

场景:

DELETE FROM table_x WHERE id not in (1,2,3,4)

响应:

update or delete on table "table_x" violates foreign key constraint "fk1" on table "table_y" DETAIL: Key (table_x_id)=(7) is still referenced from table "table_y".

  • 清空“table_y”的所有记录
  • FK 未显示在“table_y”的 FK 列表中
  • 完全删除了表“table_y”

我们仍然收到此消息,因此假设在 pg_constraints 表中的某处存在 rouge 记录。寻找约束“fk1”,我们找到两条记录并将其删除。

查询:

delete from pg_constraint where conname = 'fk1'

现在我们得到这个错误:

[Err] ERROR: cache lookup failed for constraint 868152

在这一点上,我相当确定我们需要清理一些记录,但不确定如何 - 任何人在这方面有经验可以为我指明正确的方向吗?

最佳答案

这听起来像是一个糟糕的索引。请注意,此处的解决方案是部分的。您需要找出根本原因是什么。我过去见过的原因包括硬盘驱动器和 RAM 出现故障,以及 CPU 过热或出现故障。

外键约束命中唯一索引。如果您在这里看到奇怪的行为,则问题可能是索引错误。尝试重新索引所涉及的表甚至整个数据库以解决问题。

我不认为这是由于无法吸尘引起的。 xid wraparound 发生时很讨厌,但最近的版本竭尽全力防止这种情况发生。这充其量可能是索引损坏。如果不是这样,那就是数据损坏(请注意,索引损坏在 IME 中发生的频率要高得多,但数据损坏的发生原因都是一样的,因此请找到问题根源统计)。

关于postgresql - 如果外键所在的表不存在,如何删除外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11620886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com