mysql 錯誤#1118

#1118 – Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

表示您的資料表中的一行大小超過了最大限制,不包括 BLOBs,最大行大小為 65535(是該表的所有項目加總)。這包括儲存開銷。您可以通過將某些列更改為 TEXT 或 BLOBs 來解決此問題。

在MySQL中,行大小包括列值、列類型和其他中繼資料所佔用的存儲空間。根據MySQL版本和存儲引擎的不同,最大行大小的限制也會有所不同。通常,InnoDB存儲引擎的最大行大小為65535位元組(不包括BLOB列),而MyISAM存儲引擎的最大行大小為65536位元組。

如果在創建表格時,超出了最大行大小的限制,MySQL會返回上述的錯誤消息。這時,需要進行以下的操作:

  1. 更改資料類型:將一些佔用空間較大的資料類型(如VARCHAR、CHAR等)更改為佔用空間較小的資料類型(如TEXT、BLOB等)。
  2. 優化表格結構:對於一些不經常使用的列,可以將其分離出來,創建一個單獨的表格,並使用聯接查詢來訪問這些列。
  3. 將表格拆分為多個表格:對於一些佔用空間較大的表格,可以將其拆分為多個表格,並使用聯接查詢來訪問這些表格。
  4. 更改存儲引擎:不同的存儲引擎對最大行大小的限制也不同,可以嘗試更改存儲引擎來避免這個問題。