InnoDB tillåter faktiskt bara 768 BYTES i indexet. Observera också att UTF-8-kodade strängar tar upp 3 byte per tecken, så du har bara 768/3 tecken att spela med i indexet i så fall.
En möjlig lösning är att begränsa längden på fältanvändningen i indexet. Men eftersom du också vill ha ett unikt index kanske det inte är en acceptabel lösning för dig. Använd följande för att begränsa längden på fälten som används.
CREATE UNIQUE INDEX `index_matches_on_foo_and_bar_id_and_baz_id` ON `matches` (`foo`(100), `bar_id`(100), `baz_id`(100))