2010-06-23 5 views
1

데이터베이스를 이전 형식에서 새 형식으로 마이그레이션 (새 테이블을 만들고 이전 테이블에서 새 테이블로 데이터 마이그레이션)하는 폐쇄 형 소스 업그레이드 응용 프로그램이 있습니다.MySQLIntegrityConstraintViolationException 문제 해결

응용 프로그램이 MySQLIntegrityConstraintViolationException과 충돌합니다. 기본 키 위반이나 깨진 SQL 쿼리의 내용이 담긴 테이블의 이름을 알려주지 않습니다.

더 많은 문제 해결 정보를 제공하기 위해 전환 할 수있는 MySQL 서버 옵션이 있습니까? 어쩌면 실패한 쿼리의 텍스트 또는 위반 된 기본 키 제약 조건의 이름일까요?

+0

오류는 일반적으로 기본 키 또는 고유 키 제약 조건과의 충돌로 인해 발생합니다. 테이블에 설치 프로그램이 있습니까? –

+0

데이터베이스에는 대부분 기본/고유 제한 조건이있는 다수의 테이블이 있습니다. 내 문제는 위반 한 제약 조건을 결정하는 것입니다. – David

답변

0

일반 로그 파일 인 http://dev.mysql.com/doc/refman/5.1/en/query-log.html을 사용할 수 있습니다. 이렇게하면 서버가 쿼리 처리를 중지하는 지점을 볼 수 있습니다.

또한 MySQL 명령 show processlist을 실행하면 그 시점에 처리되는 쿼리를 확인할 수 있습니다.

다른 모든 응용 프로그램 별 오류 로그를 살펴보십시오.

첫 번째 시도는 마이그레이션하는 동안 외래 키 검사를 비활성화 할 수 : SET foreign_key_checks = 0;

첫 번째 추측 것, 새로운 일하지 않는 동안 기존 서버가 0으로 기본 키 값을 지원하는 것이다.