【发布时间】:2021-09-16 07:30:38
【问题描述】:
我无法删除 postgres 数据库中的一行。这就是它所显示的
candlepin=# delete from cp_upstream_consumer where uuid = 'd88b0079-a271-4ee7-a7fe-ee3a1a7d5';
Cancel request sent
ERROR: canceling statement due to user request
CONTEXT: while locking tuple (0,5) in relation "cp_owner"
SQL statement "SELECT 1 FROM ONLY "public"."cp_owner" x WHERE $1::pg_catalog.text OPERATOR(pg_catalog.=) "upstream_id"::pg_catalog.text FOR KEY SHARE OF x"
这已经挂了几分钟。在我强制退出后,它说它与cp_owner 列有关系。但是当我们尝试删除cp_column 时,数据库可能会崩溃。那么还有其他方法可以删除cp_upstream_consumer 表中的条目吗?由于我是 postgres 新手,因此无法找到可能的替代方案。
这是我在 cp_owner 表中的内容
candlepin=# select * from cp_owner;
id | created | updated | contentprefix | defaultservicelevel | displayname | acco
unt | parent_owner | upstream_id | loglevel | autobind_disabled | content_access_mode | content_access_mode_list | last_refreshe
d | autobind_hypervisor_disabled
----------------------------------+-------------------------------+-------------------------------+---------------+---------------------+-------------+-----
----+--------------+----------------------------------+----------+-------------------+---------------------+--------------------------+---------------------
----------+------------------------------
021308a2752d917a01752d91b05d0001 | 2020-10-16 00:12:03.997+05:30 | 2021-04-16 16:08:32.789+05:30 | /COT/$env | | COT | COT
| | 021308a278d03bc50178da42c1a402bd | | f | entitlement | entitlement | 2021-04-16 16:08:32.
781+05:30 | f
(1 row)
编辑 删除几个 postgres 进程后,我尝试重新运行,这是我尝试运行删除命令时出现的新错误
candlepin=# delete from cp_upstream_consumer where uuid = 'd88b0079-a271-4ee7-a7fe-ee3a1a7d5';
ERROR: update or delete on table "cp_upstream_consumer" violates foreign key constraint "fk_upstream_consumer_id" on table "cp_owner"
DETAIL: Key (id)=(021308a278d03bc50178da42c1a402bd) is still referenced from table "cp_owner".
提前致谢
【问题讨论】:
标签: sql postgresql foreign-keys sql-delete