1071: Specified key was too long; max key length is 767 bytes
MySQL의미
생성하려는 인덱스(또는 키)가 허용된 최대 바이트 길이를 초과했다. 특히 멀티바이트 문자 집합에서는 VARCHAR 인덱스가 이 한도에 빨리 도달한다.
원인
utf8mb4(문자당 4바이트)의 넓은 VARCHAR 컬럼에 대한 인덱스. 오래된 InnoDB row format(REDUNDANT/COMPACT. 5.7 이하에서는 비활성화된 innodb_large_prefix도 해당). 다중 컬럼 복합 인덱스의 총 길이가 한도 초과. 큰 primary key.
해결 방법
인덱스 컬럼 길이를 줄이거나 prefix 인덱스를 사용한다: CREATE INDEX idx ON my_table (my_column(191)); DYNAMIC/COMPRESSED row format으로 3072바이트 한도로 전환한다(MySQL 8.0에서는 DYNAMIC이 기본값이다. innodb_large_prefix는 8.0에서 제거되었으며 5.7 이하에서만 필요하다). 필요하면 컬럼의 character set/길이를 검토한다.