首頁 > 資料庫 > mysql教程 > 為什麼我會收到 MySQL 錯誤 #1071:指定的鍵太長?

為什麼我會收到 MySQL 錯誤 #1071:指定的鍵太長?

Mary-Kate Olsen
發布: 2024-12-28 07:41:42
原創
388 人瀏覽過

Why Am I Getting MySQL Error #1071: Specified Key Was Too Long?

MySQL 錯誤 #1071:了解金鑰長度限制

嘗試向具有特定欄位(column1 和column2)的表格添加唯一索引時),使用者可能會遇到以下錯誤:

#1071 - Specified key was too long; max key length is 767 bytes
登入後複製

雖然最初看起來column1(20)和column2(500)的總長度在最大鍵長767位元組之內,實際解釋在於理解MySQL的前綴索引限制。

在5.7之前的MySQL版本中,InnoDB表有一個前綴索引限制為 767 位元組,而 MyISAM 表的限制更大,為 1,000 位元組。這意味著索引使用的最大位元組數是基於索引中包含的列的起始部分。

在給定的範例中,column1 和 column2 都是 VARCHAR(x) 列,儲存可變長度字串。發生該錯誤的原因是 MySQL 將列的整個長度視為索引的一部分,而不僅僅是儲存的實際資料。因此,即使column1和column2中的實際資料比分配的總長度短,索引大小也會超出最大限制。

為了避免此錯誤,使用者有幾個選擇:

  • 限制 VARCHAR 資料列的長度: 設定 VARCHAR長度的下限可確保索引大小保持低於max.
  • 僅對列的一部分進行索引:僅指定索引定義中每列字元的子集,例如column1(15) 和column2(200)。這會減少總索引大小並允許建立索引。
  • 考慮檢查資料模型:探索在不超過金鑰長度限制的情況下實現業務規則的替代方法。這可能涉及將資料拆分為多個列或引入額外的表。

了解列長度對索引大小的影響對於避免 MySQL 鍵長度錯誤至關重要。透過仔細管理列大小和索引定義,使用者可以在不超出資料庫限制的情況下成功實施索引並維護資料完整性。

以上是為什麼我會收到 MySQL 錯誤 #1071:指定的鍵太長?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板