简体   繁体   English

将记录添加到表中(外键约束失败)

[英]Adding record to Table (foreign key constraint fails)

I have problem with adding some records to my table (grupy, login(VARCHAR 32, Primary Key, Unique), grupa(VARCHAR 10). 我在向表中添加一些记录时遇到问题(grupy,login(VARCHAR 32,主键,唯一键),grupa(VARCHAR 10)。

When I try this script: 当我尝试此脚本时:

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');

I got a error: 我收到一个错误:

Error code 1452, SQL state 23000: Cannot add or update a child row: a foreign key constraint fails ( issi . grupy , CONSTRAINT grupy_ibfk_1 FOREIGN KEY ( login ) REFERENCES pracownicy ( login ) ON DELETE CASCADE) Line 6, column 1 错误代码1452,SQL状态23000:不能添加或更新子行,外键约束失败( issigrupy ,约束grupy_ibfk_1外键( login )参考pracownicylogin )ON DELETE CASCADE)6号线,1列

What did I do wrong? 我做错了什么?

I believe this happens when an existing value is invalid -- ie not in the table. 我相信当现有值无效时(即不在表中)会发生这种情况。 You can check for invalid values easily enough: 您可以轻松地检查无效值:

select g.*
from grupy g
where not exists (select 1 from issi.pracownicy p on p.login = g.login);

If this is the case, change the existing values (say, to NULL ) and then add the constraint. 如果是这种情况,请更改现有值(例如,更改为NULL ),然后添加约束。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM