1. 程式人生 > >Index column size too large

Index column size too large

問題描述】:
因為業務需要,需要修改欄位的長度,但是修改過程中出現如下問題:

mysql> alter table house_8090 modify house_url varchar(765);

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

問題分析】:
根據報錯提示可以看出是因為索引列太大導致。

解決辦法】:
根據報錯提示,嘗試解決:
先檢查一下是不是資料庫被限制了索引的大小
SHOW variables like 'innodb_large_prefix'

如果查詢的值是OFF的話 執行下面命令

SET GLOBAL INNODB_LARGE_PREFIX = ON;

執行完了 之後 還得檢視當前的innodb_file_format引擎格式型別是不是BARRACUDA

執行 SHOW variables like 'innodb_file_format'

如果不是的話則需要修改 SET GLOBAL innodb_file_format = BARRACUDA;

但是再次執行上面的修改語句還是會報相同的錯誤。

查了下資料,發現需要更改表的結構:

alter table house_8090 row_format=dynamic;
alter table house_8090 row_format=compressed;

再次執行後,可以正常執行。
Index column size too large