我在向表中添加一些记录时遇到问题(grupy,登录(VARCHAR 32,主键,唯一),grupa(VARCHAR 10)。
当我尝试这个脚本时:
ALTER TABLE `grupy` ENGINE = InnoDB;
ALTER TABLE `grupy` ADD FOREIGN KEY ( `login` ) REFERENCES `issi`.`pracownicy` (`login`) ON DELETE CASCADE;
INSERT INTO `grupy` (`login`, `grupa`) VALUES
('administrator', 'zalogowany');
我收到了一个错误:
错误代码1452,SQL状态23000:无法添加或更新子行:a 外键约束失败(
issi
。grupy
,CONSTRAINTgrupy_ibfk_1
外键(login
)参考pracownicy
(login
) ON DELETE CASCADE)第6行第1列
我做错了什么?
答案 0 :(得分:0)
我相信当现有值无效时(即不在表中)会发生这种情况。您可以轻松地检查无效值:
select g.*
from grupy g
where not exists (select 1 from issi.pracownicy p on p.login = g.login);
如果是这种情况,请更改现有值(例如,更改为NULL
),然后添加约束。