증상발견
스키마를 정의하는 sql 을 작성하던 중에 테이블 생성 중에 다음과 같은 메시지와 함께 테이블 생성이 중단되는 문제가 발생했다.
... 로그 생략 ...Error Code: 1071. Specified key was too long; max key length is 3072 bytes
발생원인
- 조합한 컬럼은 - varchar(255)로 선언된 5개의 컬럼을 UNIQUE KEY로 지정하면서 발생했다.- varchar(255) * 3byte = 765byte // 1개 컬럼길이 765byte * 5 = 3825byte // 최대길이인 3072byte 보다 753byte 길다
- MySQL 은 한국어를 비롯한 아시아쪽의 문자 하나를 저장하는데 3byte 혹은 4byte를 저장한다. - For InnoDB tables, the limit is 3072 bytes across all indexed columns, presumably taking only the first 767 bytes of each column. 
- For MyISAM tables, it’s the lesser of 16 columns or 1000 bytes. 
 
해결방안
- 사용하고 있는 mysql 엔진의 종류에 따라 제한된 크기 이내로 컬럼의 크기를 조정해야 한다. 
'Database' 카테고리의 다른 글
| 오라클 PL/SQL 입문(JPUB) 책이 나왔다. (0) | 2016.01.08 | 
|---|---|
| H2Database Column lob: null table: 발생 (0) | 2015.11.10 | 
| h2database 사용시 Server로 동작시키고 외부에서 연결하기 (0) | 2014.12.23 | 
| MySQL mysqldump 를 이용해서 export하고,dump 파일 Import 하기 (0) | 2012.06.04 | 
| Oracle Ports for Network Services, 오라클 사용 포트 (0) | 2010.03.22 |