14.8.2.2 테이블이 열릴 때 호환성 검사
테이블에 처음 액세스 할 때 InnoDB (InnoDB 1.0 이전의 여러 버전을 포함)은 테이블이 저장되는 테이블 공간 파일 형식을 완벽하게 지원되는 것을 확인합니다. 이 검사는 체크하지 않으면 "너무 새로운"데이터 구조를 사용하는 테이블이 검출 된 경우에 발생하는 충돌이나 손상이 방지됩니다.
의 분리에 의해 지원되는 하나의 파일 형식을 사용하는 모든 테이블을 읽거나 쓸 수 있습니다 (사용자에게 충분한 권한이 있다고 가정합니다). 시스템 구성 매개 변수 innodb_file_format
를 설정하면 특정 파일 형식이 특정 릴리스에서 지원되는 경우에도 해당 파일 형식을 사용하는 새로운 테이블이 생성되는 것을 방지 할 수 있습니다. 이러한 설정은 하위 호환성을 유지하기 위해 사용되는 수 있지만 지원되는 형식 중 하나를 사용하여 테이블에 대한 액세스는 막을 수 없습니다.
지정된 파일 형식 에 표시된대로 5.0.21 이전 버전의 MySQL은 테이블이 작성 될 때 새로운 파일 형식이 사용 된 경우 새 버전에서 생성 된 데이터베이스 파일을 확실하게 사용할 수 없습니다. 다양한 오류 조건 또는 손상을 방지하기 위해, InnoDB는 파일을 열 때 (예를 들어, 테이블에 처음 액세스 할 때) 파일 형식 호환성을 확인합니다. 현재 실행중인 버전의 InnoDB가 InnoDB 데이터 사전의 테이블 타입으로 식별되는 파일 형식을 지원하지 않는 경우, MySQL은 다음과 같은 오류를보고합니다.
ERROR 1146 (42S02) : Table ' test
. t1
'does not exist
InnoDB는 또한 오류 로그에 메시지를 씁니다.
InnoDB : TABLE test
/ t1
: unknown table type 33
이 테이블 유형은 섹션 14.8.3 "사용되는 파일 형식의 식별」 에 설명되어있는 파일 형식의 버전을 포함하는 테이블 스페이스 플래그와 동일한 것입니다.
MySQL 4.1 이전 버전의 InnoDB는 데이터베이스 파일에 테이블 형식의 식별자가 포함되지 않았습니다. 또한 MySQL 5.0.21 이전 버전에는 테이블 형식의 호환성 검사가 포함되지 않았습니다. 따라서 "너무 새로운 '형식의 테이블이 5.0.21 이전 버전의 InnoDB에서 사용되는 경우 올바른 동작을 보장하기위한 방법은 없습니다.
InnoDB 1.0 이상 파일 형식 관리 기능 (테이블 공간 태그 및 런타임 검사)를 사용하면 InnoDB는 실행중인 버전의 소프트웨어가 데이터베이스의 기존 테이블을 올바르게 처리 할 것을 빨리 확인할 수 있습니다.
InnoDB가 지원하지 않는 형식의 파일이 포함 된 데이터베이스를 열 수 (파라미터 innodb_file_format_check
를 OFF
로 설정하여) 허용 한 경우도이 섹션에 설명 된 테이블 수준 검사가 계속 적용됩니다.
InnoDB Plugin을 포함 MySQL 5.1 이전 버전의 InnoDB는 Barracuda 파일 형식의 테이블이 포함 된 데이터베이스 파일을 사용하지 않도록하는 것이 좋습니다. 이러한 테이블은 섹션 14.8.4 "파일 형식의 다운 그레이드" 에서 설명하는 절차를 사용하여 Antelope 형식으로 "다운 그레이드"할 수 있습니다.