2010-06-11 2 views
2

DB 구조가 약간 변경 되었기 때문에 이전 버전의 제품에서 생성 된 mysqldump 파일을 새 버전으로 가져올 수 있습니다 (주로 NOT NULL DEFAULT 0 ~ UNIQUE KEY DEFAULT NULL).import하기 전에 mysqldump 파일을 변경하십시오.

이전 덤프 파일을 가져온 경우 기본값 0 인 열이 이제 UNIQUE 제약 조건을 위반하기 때문에 오류가 발생합니다.

mysqldump 파일을 수동으로 변경하거나 임시 테이블로 가져 와서 변경 한 다음 새 테이블로 복사하는 것만으로도 충분합니다. 그러나 프로그래밍 방식으로이 작업을 수행 할 수있는 방법이 있습니까? (이 제품의 많은 경우에 발생할 수 있습니다).

가져 오기에 대한 키 제약 조건을 해제 한 다음 키 제약 조건을 다시 활성화하여 0 = NULL 값을 모두 설정하는 것과 같은 생각이 들었습니까?

이것이 가능합니까? 어떤 도움을 주셔서 감사합니다.

답변

3

예.

SET UNIQUE_CHECKS = 0; 고유 한 키 제약 조건을 해제합니다.
SET FOREIGN_KEY_CHECKS = 0; Null로 해제 외래 키 제약

파일 가져 오기 업데이트 0

SET UNIQUE_CHECKS = 1 I 인덱스를 삭제 결국 Gary--

+0

덕분에 다시 켜집니다
SET의 FOREIGN_KEY_CHECKS = 1 다시 켜지고 가져 오기 및 변환을 수행 한 다음 색인을 다시 적용합니다. UNIQUE_CHECKS에 이상한 동작이 있다는 것을 읽었습니다. 작성한 구문이 작동하지 않습니다. 그러나 이론은 작동하는 것처럼 보이므로 입력 해 주셔서 감사합니다! – julio

0

sed를 사용하고 자동화 된 재충전 가능 방식으로 덤프 파일을 수정할 수 있습니다.

sed s/NOT NULL DEFAULT 0/UNIQUE KEY DEFAULT NULL/g

또는 그런 일.

관련 문제