2011-10-13 2 views
5

나는 mysqldump는 파일에서 모든 데이터베이스를 복원하고 다음과 같은 오류가 점점 오전 :ERROR 1005 (HY000) : 테이블을 만들 수 없습니다 'db1.testtable'(errno를 : 121)

ERROR 1005 (HY000) at line 156: Can't create table 'db1.testtable' (errno: 121) 

을 내 SQL이 mysqldump 유틸리티에서 생성 되었기 때문에 SQL 코드에 오류가 어떻게 나타나는지 혼란 스럽습니다! 내 dump.sql에서

관련 라인은 다음과 같습니다

CREATE TABLE `testtable` (
    `username` varchar(255) NOT NULL, 
    `password` varchar(255) NOT NULL, 
    `emailaddress` varchar(255) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

감사합니다, 짐

답변

8

의 errno 121 중복 키 오류를 의미한다. 테이블의 .frm 파일은 삭제되었지만 테이블은 이미 InnoDB 내부 데이터 사전에 이미 존재합니다. 이것은 테이블 작성시 errno 121을 가져 오는 가장 일반적인 이유입니다. 또 다른 가능한 이유는 외래 키 제약 조건 이름에서 이름 충돌입니다. 제약 조건 이름은 테이블 이름과 같이 데이터베이스에서 고유해야합니다.

InnoDB는 .err 로그에서 무엇을 인쇄합니까?

+1

111013 9:30:47 InnoDB : 오류 : 테이블'db1'.'testtable'이 이미 InnoDB 내부에 존재합니다. InnoDB : 데이터 사전. .frm 파일을 지웠습니까? InnoDB : DROP TABLE을 사용하지 않았습니까? DROP DATABASE InnoDB : MySQL 버전 <= 3.23.43의 InnoDB 테이블을 사용 했습니까? InnoDB : InnoDB 매뉴얼의 Restrictions 섹션을 참조하십시오. InnoDB : InnoDB 안에있는 고립 된 테이블을 InnoDB : 다른 테이블에 같은 이름의 InnoDB 테이블을 만드는 것. InnoDB : 데이터베이스와 .frm 파일을 현재 데이터베이스로 복사하기. InnoDB : 그렇다면 MySQL은 테이블이 존재한다고 생각하고 DROP TABLE은 InnoDB : 성공합니다. –

+0

@ user993052 나는 그 지시가 아주 분명하다고 생각한다! :-) – ManseUK

+0

** 굵게 ** 오류 : 테이블 db1.testtable이 이미 InnoDB 내부 InnoDB에 존재 함 : data dictionary. ** bold ** ibdata1, ib_logfile0, ib_logfile1 파일에 대해 이야기하고 있다고 가정하고 있습니까? 내가 그들을 삭제하고 처음부터 dump.sql에서로드를 시작하려고합니다. –

관련 문제