Eu defini uma restrição única para duas colunas: Um bigint e um VARCHAR(256) COLLATE utf8mb4_unicode_ci
Então ocorreu este erro (com o qual já estou familiarizado):
Specified key was too long; max key length is 767 bytes
Em seguida, tentei definir o comprimento da coluna VARCHAR o mais alto possível sem obter um erro.
O que me surpreendeu foi que o MySQL me permitiu alterar o comprimento para 191, mas isso significaria que o índice tem 8+191*4=772 bytes, mas o erro disse que apenas 767 bytes são permitidos.
Esta é a tabela:
CREATE TABLE `file_content`
(
`file_content_id` bigint(20) NOT NULL AUTO_INCREMENT,
`local_filename` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`directory_id` bigint(20) NOT NULL,
...
PRIMARY KEY (`file_content_id`),
UNIQUE KEY `fc_dir_name` (`directory_id`,`local_filename`),
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Estou usando o MySQL 5.5.27