InnoDB en realidad solo permite 768 BYTES en el índice. Además, tenga en cuenta que las cadenas codificadas en UTF-8 ocupan 3 bytes por carácter, por lo que solo tiene 768 / 3 caracteres para jugar en el índice en ese caso.
Una posible solución es limitar la longitud del uso del campo en el índice. Sin embargo, dado que también desea un índice único, es posible que esa no sea una solución aceptable para usted. Utilice lo siguiente para limitar la longitud de los campos utilizados.
CREATE UNIQUE INDEX `index_matches_on_foo_and_bar_id_and_baz_id` ON `matches` (`foo`(100), `bar_id`(100), `baz_id`(100))