2011-08-21 3 views
1

글쎄, 스택 오버플로에 대한 내 질문에 대한 답변을 100 개 이상 받았지만 마침내 등록하여 첫 번째 질문을 올렸습니다!MySQL 서버가 외래 키 관계를 인식하지 못하는 이유는 무엇입니까?

좋아요, 내 프로그램 사용자와이 테이블에 연결된 11 개의 테이블이 1 : 1 및 1 : M 관계로 구성되어 있습니다. 대부분의 외래 키는 ON UPDATE CASCADE ON DELETE RESTRICT으로 설정됩니다. 센터 테이블을 삭제하면 외부 키가 있어야 함에도 불구하고 센터 테이블을 삭제할 수 있습니다. 내가 전에 관계형 데이터베이스 처리 한 때, 나는 이러한 오류 메시지가 나타날 것입니다 :

#1217 - Cannot delete or update a parent row: a foreign key constraint fails 
#1452 - Cannot add or update a child row: a foreign key constraint fails 

는 이제 마음이 내가 실제로 오류 메시지를 원하는 한 시간입니다. 관계형 데이터베이스의 기능을 원하고 내 테이블은 모두 InnoDB입니다. Google은이 문제를 도와주지 않았기 때문에 MySQL 설명서에서 아무 것도 찾을 수 없었습니다.

+3

테이블을 지우거나 센터 테이블에서 행을 삭제 하시겠습니까? –

+0

외래 키 제약 조건이 실제로 있는지 확인하고 싶을 수도 있습니다. – pif

+1

foreign_key_checks 변수의 설정을 확인하십시오 : http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html #sysvar_foreign_key_checks –

답변

0

This post은 MySQL 포럼에 거의 들어 있지 않지만이를 해결하기 위해 수행해야 할 작업에 대해 자세히 설명하지 않았습니다. 기본적으로 :

service mysqld stop 
cd /var/lib/mysql 
mkdir old 
mv ib* old 
vim /etc/my.cnf 
servie mysqld start 

Vim은 들어, 확인 innodb_buffer_pool_size, innodb_log_file_size 및 innodb_log_buffer_size가 제대로 설정되어 있는지 확인하십시오. MySQL 포럼의 Another post에는 약간의 설정 오류가 있습니다. 즉, innodb_log_file_size가 innodb_buffer_pool_size의 25 % 일 필요가 있습니다. 따라서이 세 가지 각각에 대해 16M, 4M 및 8M이 있습니다.

관련 문제