14.19.5 InnoDB 오류 코드
다음은 발생할 수있는 InnoDB
고유의 일반적인 오류 목록 (그러나 모든이 포함되어있는 것은 아닙니다) 및 각 오류가 발생하는 이유와 문제 해결 방법에 대한 정보입니다 .
1005 (ER_CANT_CREATE_TABLE)
테이블을 만들 수 없습니다. 오류 메시지가 오류 150을 표시하는 경우는 외래 키 제약 조건 이 제대로 형성되지 않았기 때문에 테이블의 작성에 실패했습니다. 오류 메시지가 오류 -1을 나타내는 경우는 테이블에 내부
InnoDB
테이블의 이름과 일치하는 컬럼 이름이 포함되어 있기 때문에 테이블의 작성에 실패했을 가능성이 있습니다.1016 (ER_CANT_OPEN_FILE)
InnoDB
테이블의.frm
파일이 존재에도 불구하고,이 테이블이InnoDB
데이터 파일 을 찾을 수 없습니다. 섹션 14.19.3 "InnoDB 데이터 사전 작업 문제 해결" 을 참조하십시오.1114 (ER_RECORD_FILE_FULL)
InnoDB
테이블 스페이스의 공간이 부족합니다. 새로운 데이터 파일을 추가하기 위해 테이블 공간을 재구성하십시오.1205 (ER_LOCK_WAIT_TIMEOUT)
잠금 대기 제한 시간이 만료되었습니다. 트랜잭션 전체가 아니라 대기 시간 너무 문이 롤백 되었습니다.
innodb_lock_wait_timeout
구성 옵션의 값은 SQL 문이 다른 트랜잭션의 완료를 더 오랜 시간 대기하도록하려면 늘리고, 또한 장시간 실행되는 트랜잭션이 너무 많아 잠금 문제가 발생하고, 바쁜 시스템의 동시성 이 저하되어있는 경우 줄일 수 있습니다.1206 (ER_LOCK_TABLE_FULL)
잠금 장치의 갯수가
InnoDB
잠금 관리 전용으로 사용되는 메모리 양을 초과합니다. 이 오류를 방지하려면innodb_buffer_pool_size
값을 늘립니다. 개별 응용 프로그램 내에서 큰 작업을 작은 작업으로 분할 할 해결 방법이 될 수 있습니다. 예를 들어,이 오류가 큰INSERT
에서 발생하는 경우는 여러 개의 작은INSERT
작업을 수행합니다.1213 (ER_LOCK_DEADLOCK)
트랜잭션 에서 교착 상태 가 발생하여 응용 프로그램에서 수정 조치를 취할 수 있도록 자동으로 롤백 되었습니다. 이 오류에서 복구하려면이 트랜잭션의 모든 작업을 다시 실행합니다. 교착 상태는 잠금에 대한 요구가 트랜잭션간에 일관성이없는 순서로 도착하는 경우에 발생합니다. 롤백 된 트랜잭션이 모든 잠금을 해제했기 때문에 다른 트랜잭션 요구되는 모든 락을 취득 할 수있게되었습니다. 따라서 롤백 된 트랜잭션을 다시 실행하면 트랜잭션이 다른 트랜잭션의 완료를 대기하지 않으면 안되는 것이 있습니다 만, 일반적으로 교착 상태는 재발하지 않습니다. 교착 상태가 자주 발생하면 잠금 작업 시퀀스 (
LOCK TABLES
,SELECT ... FOR UPDATE
등)을 문제가 발생하면 다른 트랜잭션 또는 응용 프로그램간에 일관성있게하십시오. 자세한 내용은 섹션 14.2.11 "교착 상태의 해결 방법" 을 참조하십시오.1216 (ER_NO_REFERENCED_ROW)
행을 추가하려고하지만 부모 행이 없기 때문에 외래 키 제약 조건 을 위반합니다. 먼저 부모 행을 추가하십시오.
1217 (ER_ROW_IS_REFERENCED)
아이를 가진 부모 행을 삭제하려고하고 있기 때문에, 외래 키 제약 조건 을 위반합니다. 먼저 아이를 삭제하십시오.
ERROR 1553 (HY000):
Cannot drop index '
fooIdx
': needed in a foreign key constraint이 오류 메시지는 특정 참조 제한 조건을 적용 할 수있는 마지막 인덱스를 삭제하려고 할 때보고됩니다.
DML 문 최적의 성능을 얻으려면,
InnoDB
는 부모 테이블 에서UPDATE
및DELETE
조작으로 해당 행이 자식 테이블 에 존재하는지 여부를 쉽게 확인할 수 있도록 인덱스는 외래 키 컬럼에 존재해야합니다.CREATE TABLE
,CREATE INDEX
및ALTER TABLE
문의 부작용으로 MySQL은 이러한 인덱스를 필요에 따라 자동으로 만들거나 삭제합니다.인덱스를 삭제하면
InnoDB
는 인덱스가 외래 키 제약 조건 검사에 사용되지 않았는지 확인합니다. 동일한 제한을 적용하는 데 사용할 수있는 다른 인덱스가 있으면 계속 인덱스를 삭제할 수 있습니다.InnoDB
는 특정 참조 제한 조건을 적용 할 수있는 마지막 인덱스를 제거 할 수 없도록하고 있습니다.