我得到:ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.
这里有很多问题,我尝试了很多。我的情况:
我已经知道问题了。该列使用4 * 255字节,但COMPACT表只能容纳767。
我已经尝试过的方法(均无效):
我还尝试还原了最旧的RDS快照(7天),但是它不起作用。这很奇怪,因为该应用程序昨天和前几天都在工作。
有帮助吗?
编辑:
SHOW FULL COLUMNS在令人讨厌的专栏上给了我
Field: reasonForNetPromoteScore
Type: varchar(255)
Collation: utf8mb4_unicode_ci
Null: YES
Key: MUL
Default: NULL
Extra:
Privileges: select,insert,update,references
Comment:
SHOW INDEX给了我这些:
*************************** 6. row ***************************
Table: Registration
Non_unique: 1
Key_name: registration_reason_net_promote_score
Seq_in_index: 1
Column_name: reasonForNetPromoteScore
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
Visible: YES
Expression: NULL
*************************** 7. row ***************************
Table: Registration
Non_unique: 1
Key_name: registration_reason_net_promote_score_nps
Seq_in_index: 1
Column_name: reasonForNetPromoteScore
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
Visible: YES
Expression: NULL
答案 0 :(得分:0)
也许您需要升级到8.0.12:从变更日志中:
----- 2018-07-27 8.0.12常规可用性&2018-07-27 5.7.23常规可用性-------
对于尝试使用ALTER TABLE和INPLACE算法来增加InnoDB表的VARCHAR列的长度的尝试,如果对该列进行了索引,则尝试将失败。
如果对于COMPACT或REDUNDANT行格式,索引大小超过了InnoDB的767字节限制,则CREATE TABLE和ALTER TABLE不会报告错误(在严格SQL模式下)或警告(在非严格模式下) )。 (错误#26848813)