2013-02-02 3 views
0

나는 바보 였고 고객을 위해 1 년 전의 테이블을 만들었습니다. 이제 나는 더 잘 알고 있고 관계를 사용해야했습니다. 이제는 Navicat에서 생성하려고합니다.Navicat에서 관계 생성 시도

ALTER TABLE geerdink_new.dossier 
    ADD CONSTRAINT fk_dossier_klant_1 
    FOREIGN KEY (dossierKlantID) 
    REFERENCES geerdink_new.klant (klantID) 

나는 약간의 오차가 점점 오전 : 실행

는 [메시지] 실패 - 외부 키 fk_dossier_klant_1에 오류 - 1452 - 추가 또는 자식 행을 업데이트 할 수 없습니다 : 외래 키 제약 조건 (geerdink_new 실패합니다. #sql-420_51, CONSTRAINT fk_dossier_klant_1 FOREIGN KEY (dossierKlantID는) 참고 문헌 klant (klantID))

어떻게이 문제를 해결 할 수 있어요?

+0

는 우리에게이 오류를 생성하는 코드를 보여줄 수 :이 쿼리? –

+0

실행 중 - ALTER TABLE'geerdink_new'.'dossier' 외래 키'fk_dossier_klant_1' 외래 키 ('dossierKlantID') 참조'geerdink_new'.'klant' ('klantID') – Thijmen

답변

2

이것은 Navicat 오류가 아니지만 MySQL 오류입니다. 당신이 당신의 제약 조건을 만들려고 할 때 뭔가 가능성이 제대로 일치되지 않습니다

1) 열 정의가 동일하지 않습니다 (예를 들어 하나의 부호없는 정수이고, 다른 하나는 부호있는 정수)

입니다 2) 한 열에는 관계를 작성중인 열의 값과 일치하지 않는 값이 있습니다.

편집 :

SELECT klantID FROM klant LEFT JOIN geerdink_new ON geerdink_new.dossierKlantId = klant.klantID WHERE dossierKlantId IS NULL; 
+0

두 형 모두 길이와 타입이 같습니다 .. – Thijmen

+0

컬럼 데이터 타입을 검사 할 때,이'SELECT * FROM geerdink_new.dossier AS d where not EXISTS (SELECT 1 FROM geerdink_new.klant AS k WHERE k.klantID = d.dossierKlantID)를 실행하면된다. 'klant'에 ​​관련된 행. –

+0

하나님 감사합니다. 그것은 트릭을했다. 감사! – Thijmen