2012-10-11 4 views
-1

다른 두 테이블에서 d_desavanja-> id 필드에 foreign를 설정했지만이 테이블에서 나는 할 수 없습니다.MySQL 외래 키

어떻게 작동합니까?

SQL query: 

ALTER TABLE `d_des_kat` ADD FOREIGN KEY ( `desavanje_id`) REFERENCES `desavanja`.`d_desavanja` (

`id` 
) ON DELETE CASCADE ON UPDATE CASCADE ; 

MySQL said: 

#1452 - Cannot add or update a child row: a foreign key constraint fails (`desavanja/#sql-12f3_5af2e`, CONSTRAINT `#sql-12f3_5af2e_ibfk_1` FOREIGN KEY (`desavanje_id`) REFERENCES `d_desavanja` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) 
+0

는'쇼 이노 디비 status'을한다. 출력물에 묻힌 것은 마지막 세부 키 오류입니다. 일반적으로 실패는 일종의 필드 유형 불일치로 인한 것입니다. –

답변

2

d_des_kat에 제약 조건에 실패한 행이 있습니다. 데이터를 검사하여 NULL이 아닌 d_des_kat.desavanje_id 값이 모두 idd_desavanja과 일치하는지 확인하십시오.

다음 쿼리는 당신에게 문제가되는 행을 표시해야합니다 :

SELECT * 
FROM d_des_kat 
WHERE desavanje_id NOT IN (SELECT id FROM d_desavanja) 
+0

이걸 가지고 있습니다 : http://i48.tinypic.com/29ld65k.png 방금이 행을 지웠고 지금은 외래 키를 추가 할 수 있습니다. 고마워요 –

+0

확실한 것. 외래 키와 일치하지 않는 행을 추가하려고하면 외래 키가 데이터 무결성을 적용하고 의도적으로 barf로 바뀝니다. 키가 추가되면 테이블 전체에서 검사가 수행됩니다. 여기에서 보셨던 것입니다. –