2012-05-09 4 views
0

이 쿼리를 사용하여 table1에 외래 키를 추가하려고합니다.MySql 테이블을 변경하면 키 제약 조건이 발생합니다.

ALTER TABLE `db`.`table1` 
    ADD CONSTRAINT `fk_table1_2` 
    FOREIGN KEY (`field1`) 
    REFERENCES `db`.`table2` (`id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION; 

table1.field1 모두 INT(11)있다 table2.id을 참조한다.

그것은이 오류와 함께 실패

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`db`.<result 2 when explaining filename '#sql-3f9_4c'>, CONSTRAINT `fk_table1_2` FOREIGN KEY (`field1`) REFERENCES `table2` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) 

워크 벤치에서 그것을 시도는 이전 오류와는 테이블을 "다시"하려고하면 같은 CREATE TABLE 쿼리를 보여 ERROR 1050: Table 'table1' already exists을 말한다 다른 하나를 제공합니다!

무엇이 문제입니까?

답변

0

는 해당 오류 (Cannot add or update a child row: a foreign key constraint fails)은 상태 데이터를 기존에 적합해야 2 개 테이블 간의 참조 (reference)를 추가 MySQL FK Doc

에서 참조된다.

즉, table1.id = table2.id이라고 말하면 table1table2의 모든 ID가 일치해야합니다.

해결하려면 일치하지 않는 행을 제거하거나 수정해야합니다.
예 :

table1.id | table2.fk 
    1  |  1  ok 
    2  |  null  error 
    3  |  4  error if id 4 is not in table1 
관련 문제