資料庫欄位長度定義:修改資料庫欄位長度語句

概述

最近在修改資料庫編碼時發現超出單行最大長度,下面記錄下解決過程,以作備忘!

詳解mysql修改字元編碼報錯超出單行最大長度解決方法

> 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


思路:

詳解mysql修改字元編碼報錯超出單行最大長度解決方法

MySQL要求一個行的定義長度不能超過65535。

(1)單個欄位如果大於65535,則轉換為TEXT 。

(2)單行最大限制為65535,這裡不包括TEXT、BLOB。

所謂單行最大限制指的就是一張表中所有欄位的所設置的長度不得超過65535位元組,

例如一個表中有三個varchar欄位長度30000,那麼這個表的單行長度為:30000*3=90000,大於65535則報錯不能建表,這裡乘以3是因為資料庫用的utf8編碼,3個位元組表示一個字元。

而utf8mb4(mb4就是most bytes 4的意思,專門用來兼容四位元組的unicode。),也就是4個位元組表示一個字元,比utf8佔用更多存儲空間,所以在這裡修改編碼的時候就報錯。

最大問題是還是合理建表,不要建太多欄位,或者欄位類型設置太長了,像這樣設置了太大的欄位長度會導致最後超出表長度。


解決:

調整長度為8100

詳解mysql修改字元編碼報錯超出單行最大長度解決方法

測試如下:

詳解mysql修改字元編碼報錯超出單行最大長度解決方法

覺得有用的朋友多幫忙轉發哦!後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~

詳解mysql修改字元編碼報錯超出單行最大長度解決方法

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/216463.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-08 22:18
下一篇 2024-12-08 22:18

相關推薦

發表回復

登錄後才能評論