Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes 錯誤分析

報錯原因:

如果使用的是utf8mb4,並且在長度超過191個字符的varchar列上有唯一索引,因爲utf8mb4需要比utf8或latin1更多的存儲空間。如果啓用innodb_large_prefix(默認值),則對於使用DYNAMIC或COMPRESSED行格式的InnoDB表,索引鍵前綴限制爲3072個字節。如果innodb_large_prefix被禁用,則任何行格式的表的索引鍵前綴限制爲767字節。

解決辦法

方法一、打開innodb_large_prefix以允許索引中的較大列。
方法二、設置有唯一索引varchar列字符串長度爲191

注意

MySQL 5.7.7 默認啓用innodb_large_prefix,Innodb_large_prefix,在MySQL 5.7.7中已棄用,並將在未來版本中刪除。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章