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 インスタンスでこれを試してみたところ、同じ問題が発生しました。