증상발견
스키마를 정의하는 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 |