2011-11-18 2 views
0

현재 수천 개의 레코드가있는 MYISAM 스토리지 엔진을 기반으로하는 데이터베이스가 있습니다. 데이터베이스를 InnoDb 스토리지 엔진으로 변환하고 싶습니다.myisam에서 innodb로 데이터 복사

InnoDb로 변환하기 전에 현재 데이터베이스 스키마 (현재 MyISAM db 스키마에는 기본 키가 있음)에 외래 키를 추가해야하므로 단순한 ALTER 스토리지 엔진 명령이 아닙니다.

내 질문은 DB를 InnoDb로 변환하면 현재 MYISAM 엔진에서 InnoDb 엔진으로 데이터를 복원하는 것이 PhpMyAdmin 인스턴스를 실행하고 (DB 스키마 또는 구조를 제외한) 데이터를 백업하는 것처럼 간단합니다. Innodb 엔진으로 복구 하시겠습니까?

이렇게하는 데있어 잠재적 인 장애물은 무엇입니까?

이 문제를 해결하는 올바른 방법입니까, 아니면 데이터를 복원하는 더 쉽고 편리한 방법이 있습니까?

답변

0

외래 키를 먼저 추가 할 때 특정 순서로 데이터를 복사해야합니다. 그렇지 않으면 외래 키 제약 조건으로 인해 데이터가 추가되지 않습니다. 따라서 가장 좋은 방법은 현재 데이터 집합으로 외래 키 제약 조건을 충족 할 수 있는지 (SQL 쿼리를 통해) 확인한 다음 데이터를 복사 한 후 외래 키를 정의하는 것입니다. PHPMyAdmin을 사용하여 InnoDB 데이터베이스에서 데이터를 내보내는 경우 이미 주문이 완료되었으며 문제없이 다시 가져올 수 있습니다.

2

내가 현재 데이터베이스 스키마

왜에에 외래 키를 추가해야하기 때문에 그것은 간단한 ALTER 스토리지 엔진 명령하지 않습니다? 물론 백업 먼저 데이터, 즉 항상 좋은 생각,하지만 당신은 당신과 같은, 당신의 간단한 ALTER TABLE을 실행할 수 있습니다, 데이터를 덤프 및 복원 할 필요가 없습니다 :

ALTER TABLE `tablename` ENGINE = InnoDB; 

그 후 당신은 어떤을 추가 할 수 있습니다 색인 및 외래 키. 새로운 외래 키가 실패하면 데이터를 수정하고 다시 시도하십시오.

0

당신은 아마 나는 단지 하나를 참조 나중에

  1. 알터 테이블이 외래 키

를 사용하는 새로운 엔진

  • 알터 각 테이블을 사용하여 외부 키를 추가 할 수 있습니다 그 문제는 외래 키가 처음부터 부러진 경우 일 것입니다.

  • 관련 문제