2

Invision コミュニティ フォーラムのアップグレード プロセスの一環として、既存のテーブルにインデックスを追加しようとしています。データベースは、MySQL 5.6 と互換性のある AWS Aurora Serverless でホストされています。ただし、毎回、次のエラーが表示されます。

ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.

テーブルとスキーマの詳細は次のとおりです。

+---------------+--------+---------+------------+-------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+-------------+------------+--------------------+----------+--------------------+---------+
| Name          | Engine | Version | Row_format | Rows  | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation          | Checksum | Create_options     | Comment |
+---------------+--------+---------+------------+-------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+-------------+------------+--------------------+----------+--------------------+---------+
| ibf_core_tags | InnoDB |      10 | Dynamic    | 36862 |            299 |    11026432 |               0 |     13189120 |   4194304 |          95183 | NULL        | NULL        | NULL       | utf8mb4_unicode_ci |     NULL | row_format=DYNAMIC |         |
+---------------+--------+---------+------------+-------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+-------------+------------+--------------------+----------+--------------------+---------+
+--------------------+--------------+------+-----+---------+----------------+
| Field              | Type         | Null | Key | Default | Extra          |
+--------------------+--------------+------+-----+---------+----------------+
| tag_id             | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| tag_aai_lookup     | char(32)     | NO   | MUL |         |                |
| tag_aap_lookup     | char(32)     | NO   | MUL |         |                |
| tag_meta_app       | varchar(200) | NO   | MUL |         |                |
| tag_meta_area      | varchar(200) | NO   |     |         |                |
| tag_meta_id        | int(10)      | NO   |     | 0       |                |
| tag_meta_parent_id | int(10)      | NO   |     | 0       |                |
| tag_member_id      | int(10)      | NO   | MUL | 0       |                |
| tag_added          | int(10)      | NO   | MUL | 0       |                |
| tag_prefix         | int(1)       | NO   |     | 0       |                |
| tag_text           | varchar(255) | YES  |     | NULL    |                |
+--------------------+--------------+------+-----+---------+----------------+

テーブルのデフォルトの文字セットは utf8mb4 で、innodb_large_prefix設定はONです。

私がやろうとしている操作は次のとおりです。

ALTER TABLE `ibf_core_tags` ADD KEY `tag_text` (`tag_text`(191));

私は 191 * 4 = 764 だと思います。これは、私が超えていると言っている 767 バイト値よりも小さいです。これは Aurora Serverless のバグですか? この問題を回避する方法はありますか? テーブルを MyISAM に変更してインデックスを追加しようとしましたが、実際に試してみると同じエラーが発生します。

MySQL 5.6 のローカル インストールを使用して、同じデータベースでこの ALTER TABLE クエリを実行できたので、なぜ Aurora Serverless が違うのかわかりません。

サーバーレスでない Aurora インスタンスでこれを試してみたところ、同じ問題が発生しました。

4

1 に答える 1