2011-03-10 3 views
2

기존 레거시 테이블에 외래 키 제약 조건이있는 새 테이블이 있습니다. 이전 테이블에는 많은 양의 데이터가 채워지지만 이전 테이블의 행을 참조하는 행을 새 테이블에 추가하려고하면 Cannot add or update a child row: a foreign key constraint fails 오류가 발생합니다.외래 키 제약 조건이있는 테이블에 행 추가 [MySQL]

이전 테이블의 행을 참조하는 행을 새 테이블에 어떻게 추가합니까?

편집 여기에 내가 시도 두 쿼리입니다

mysql> select user_pk from users where username = 'test_user'; 
+---------+ 
| user_pk | 
+---------+ 
| 123766 | 
+---------+ 
1 row in set (0.00 sec) 

mysql> insert into uservisit (user_id) values (123766); 
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test_database`.`uservisit`, CONSTRAINT `user_id_refs_user_pk_37c3999c` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_pk`)) 

내가 뭔가 잘못하고 있는가가?

+0

당신은 새로운 테이블에 삽입하려는 값이 존재 확실 오래된 테이블? –

+0

여기에 의견이 귀하의 질문에 대한 답변을 참조하십시오 : http://stackoverflow.com/questions/1253459/mysql-error-1452-cannot-add-or-update-a-child-row-a-foreign-key-constraint- 파이 – Raelshark

답변

4

당신은 너무 같은 일시 해제 외래 키를 확인 할 수 있습니다

SET foreign_key_checks = 0; 
... 
do updates 
... 
SET foreign_key_checks = 1; 

더 나은 귀하의 모든 업데이트 후 모든 외부 키 많다는 생각에 있는지 확인하십시오. 당신이 이전에 5.5.13에 MySQL의 버전을 사용하는 경우

0

새 행을 삽입 할 때 외래 키가있는 열에 넣은 값이 이전 테이블의 참조 된 열에 있어야합니다.

일부 검색어와 예제 데이터가 지난 경우 도움이 될 수 있습니다.

관련 문제