MySQL 錯誤#1071:深入研究金鑰長度限制
嘗試透過在兩個VARCHAR 上新增唯一鍵約束來修改MySQL 表時列時,會出現一條相當令人困惑的錯誤訊息:「#1071 - 指定的密鑰太長;最大密鑰長度為767 位元組".儘管兩列的大小似乎都在 767 位元組限制之內,但了解此錯誤需要更深入地了解 MySQL 的金鑰長度限制。
重新存取金鑰長度限制
MySQL 5.6 及更早版本中鍵的最大長度對於InnoDB 表來說確實是767 位元組,對於InnoDB 表來說是1,000 位元組MyISAM 表。然而,在 MySQL 5.7 及更高版本中,此限制已擴展到更大的 3072 位元組。
解碼 VARCHAR 儲存
雖然 VARCHAR 資料類型建議最大長度為各自的欄位儲存 20 和 500 位元組,此計算不考慮字元編碼。如果您的 VARCHAR 欄位以 utf8mb4 格式編碼,則最大索引前綴長度實際上會減少四分之一,結果只有 191 個位元組 (767 / 4)。
找出解決方法
要解決此問題,請考慮實施以下其中一項策略:
以上是為什麼 MySQL 會拋出錯誤#1071:「指定的鍵太長」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!