問題の説明
RDS MySQL の large フィールドにインデックスを作成しようとすると、次のエラーが発生することがあります。
ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.原因
MySQL の InnoDB エンジンは、インデックスフィールドの長さを 767 バイトに制限します。マルチバイト文字セットを持つ large フィールドや複数のフィールドの組み合わせの場合、制限を超えるとインデックスの作成時にこのエラーがトリガーされます。
たとえば、4 バイト文字セットである utf8mb4 文字セットでは、サポートされるインデックスフィールドの最大長は 191 文字です (767 バイト/文字あたり 4 バイト ≈ 191 文字)。したがって、varchar(255) または char(255) 型のフィールドにインデックスを作成すると失敗します。詳細については、「MySQL ドキュメント」をご参照ください。
解決策
RDS コンソールにログインし、[パラメーター] ページで
innodb_large_prefixパラメーターをONに変更し、[パラメーターの送信] をクリックします。説明innodb_large_prefixを有効にすると、DynamicおよびCompressedフォーマットの InnoDB テーブルの最大インデックスフィールド長は、最大 3072 バイトまでサポートできます。プライマリインスタンスでこのパラメーターを変更すると、システムはプライマリインスタンス配下のすべての読み取り専用インスタンスに自動的に同期します。

テーブルの row_format を調整します。
新しいテーブルを作成するときに、row_format を Dynamic または Compressed として指定できます。次の例をご参照ください。
CREATE TABLE idx_length_test_02 ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) ) ROW_FORMAT=DYNAMIC DEFAULT CHARSET=utf8mb4;既存のテーブルの場合、次のコマンドを使用して row_format を変更できます。
ALTER TABLE <table name> ROW_FORMAT=DYNAMIC; ALTER TABLE <table name> ROW_FORMAT=COMPRESSED;
これらの操作が完了したら、再度インデックスを作成して、エラーが発生しなくなったことを確認します。