MySQL 鍵長度限制及其修正
嘗試在兩個VARCHAR 欄位上建立唯一索引時,使用者可能會遇到錯誤「 # 1071 - 指定的密鑰太長;最大密鑰長度為767 位元組」。此錯誤源自於 MySQL 對金鑰長度的限制。
了解金鑰長度限制
在 MySQL 5.6 及之前版本中,最大金鑰長度為 767 InnoDB 表的位元組數。此限制適用於唯一鍵內所有索引欄位的組合。對於 MyISAM 表,此限制為 1,000 位元組。
UTF-8 字元編碼因子
使用UTF-8 字元編碼(utf8mb4) 時,需要注意的是它最多使用四個位元組來表示單字。因此,對於 utf8mb4 編碼字段,767 位元組的最大索引前綴長度有效減少為 191 個字元。
可能的解決方案
ALTER TABLE `mytable` ADD UNIQUE ( column1(15), column2(200) );
在MySQL 5.7 版及更高版本中,最大金鑰長度已增加到3072 字節,在處理大金鑰時提供更大的靈活性。然而,考慮字元編碼因素和資料模型最佳化以避免密鑰長度錯誤仍然很重要。
以上是為什麼我的 MySQL 唯一索引太長,要如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!