Postgresql Postgres:添加外键时出错
我试图将FK添加到表中,但每当我尝试更改表时,都会遇到错误。以下是我正在使用的查询: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; 第一个查询运行良好
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;