創建表時報錯,索引列超過最大約束


創建表時報錯,索引列超過最大約束
ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.

1. 錯誤原因
由於 MySQL Innodb 引擎表索引字段長度的限制為 767 字節,因此對於多字節字符集的大字段(或者多字段組合索引),創建索引會出現上面的錯誤。
以 utf8mb4 字符集 字符串類型字段為例:utf8mb4 是 4 字節字符集,則默認支持的索引字段最大長度是: 767 字節 / 4 字節每字符 = 191 字符,因此在 varchar(255) 或 char(255) 類型字段上創建索引會失敗。

解決辦法:
1.調整參數 innodb_large_prefix 為 ON
將 Innodb_large_prefix 修改為 on 后,對於 Dynamic 和 Compressed 格式的InnoDB 引擎表,其最大的索引字段長度支持到 3072 字節。
2.創建表的時候指定表的 row format 格式為 Dynamic

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM