Postgresql Postgres:添加外键时出错

Postgresql Postgres:添加外键时出错,postgresql,Postgresql,我试图将FK添加到表中,但每当我尝试更改表时,都会遇到错误。以下是我正在使用的查询: ALTER TABLE geofences ADD COLUMN role_id integer NOT NULL DEFAULT 0; ALTER TABLE geofences ADD CONSTRAINT geofences_role_id_fk FOREIGN KEY (role_id) REFERENCES auth_roles(id) ON DELETE CASCADE; 第一个查询运行良好

我试图将FK添加到表中,但每当我尝试更改表时,都会遇到错误。以下是我正在使用的查询:

ALTER TABLE geofences ADD COLUMN role_id integer NOT NULL DEFAULT 0;



ALTER TABLE geofences ADD CONSTRAINT geofences_role_id_fk FOREIGN KEY (role_id) REFERENCES auth_roles(id) ON DELETE CASCADE;
第一个查询运行良好,但当我尝试添加约束时,会收到以下消息:

错误:对表“geofenses”的插入或更新违反外键约束“geofenses\u role\u id\u fk” 详细信息:表“身份验证角色”中不存在键(角色id)=(0)


提前感谢。

此错误仅意味着中的行包含列
role\u id
中的值,这些值在表
auth\u roles
中不存在。您需要先修复数据,然后才能添加外键并读取错误消息。
geofenses
中有一行
role\u id
为0,但
auth\u roles
中没有一行
id
为0。这将违反约束,因此无法创建该约束。只需从列
geofenses.role\u id
中删除
DEFAULT 0
。发生此错误是因为表auth_角色没有id为0的行。感谢michel,我必须删除这一行:NOTNULL DEFAULT 0;