首頁 > 資料庫 > mysql教程 > 如何解決 MySQL 的「金鑰規範中使用的 BLOB/TEXT 資料列沒有金鑰長度」錯誤?

如何解決 MySQL 的「金鑰規範中使用的 BLOB/TEXT 資料列沒有金鑰長度」錯誤?

Linda Hamilton
發布: 2025-01-19 23:36:10
原創
555 人瀏覽過

How to Resolve MySQL's

排除 MySQL 的 BLOB/TEXT 鍵規格錯誤

在包含 BLOB 或 TEXT 欄位的 MySQL 表上定義主鍵或索引通常會導致下列錯誤:

<code>BLOB/TEXT column 'message_id' used in key specification without a key length</code>
登入後複製

出現此錯誤是因為 MySQL 索引需要固定長度的資料型別。 BLOB 和 TEXT 列是可變長度的,因此需要指定鍵長度來決定索引大小。 但是,不支援直接為 BLOB/TEXT 指定密鑰長度。

解決策略:

有幾種方法可以解決此限制:

  • 從鍵/索引中排除 BLOB/TEXT:最簡單的解決方案是從主鍵或索引定義中刪除 BLOB 或 TEXT 列。
  • 利用 VARCHAR 欄位: 以 VARCHAR 資料列取代 BLOB/TEXT,並指定最大長度。 至關重要的是,請將此長度保持在 256 個字元以下,以避免自動轉換為 SMALLTEXT,這與金鑰不相容。
  • 使用複合鍵:對於超過單一 VARCHAR 容量的唯一標識符,請使用多個欄位建立複合鍵。

進一步考慮:

即使沒有直接涉及 BLOB/TEXT 列,「沒有密鑰長度的密鑰規範」錯誤也可能出現。 當 VARCHAR 鍵的長度超過 255 個字元時,會發生這種情況,觸發到 SMALLTEXT 的隱式轉換。

為避免這種情況,請確保鍵中使用的所有 VARCHAR 欄位的最大長度都低於 255 個字元。

以上是如何解決 MySQL 的「金鑰規範中使用的 BLOB/TEXT 資料列沒有金鑰長度」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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