#1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs

黄文Rex發表於2024-10-03

這個問題表示在MySQL中,表的一行資料大小超過了最大限制65535位元組。這通常是因為表中的某些欄位過長導致的。下面是一些解決方法:

  1. 調整欄位型別:將一些較大的欄位改為TEXTBLOB型別。這些型別的儲存方式不同於普通欄位,可以避免佔用過多的行內空間。

  2. 拆分欄位:如果某個欄位包含多種資訊,考慮將其拆分為多個欄位來減少單個欄位的大小。

  3. 最佳化資料型別:檢查所有欄位的資料型別是否為最優選擇。例如,對於字元欄位,確保沒有使用比實際需要更大的字符集。

  4. 使用分割槽表:如果表非常大,可以考慮使用分割槽表來分散資料,從而減小每個分割槽表的行大小。

  5. 檢查索引和外來鍵:有時候過多的索引或複雜的外來鍵關係也會增加行開銷。確認是否所有索引都是必要的。

  6. 檢視儲存引擎限制:不同的儲存引擎有不同的行大小限制。InnoDB預設限制為65535位元組。如果當前引擎無法滿足需求,可以考慮其他儲存引擎。

  7. 增加列定義中的NULL屬性:如果某列允許為空,指定NULL而不是NOT NULL可以節省一點空間。

執行上述操作後,可能需要重新建立表或者遷移資料,請謹慎操作並備份資料。

相關文章