MySQL 的 VARCHAR 最大長度是多少?


5.0.3 之前的 MySQL 版本最多可以儲存 255 個字元,但從 5.0.3 版本開始,它可以儲存 65,535 個字元。

MySQL 官方文件指出:

在 MySQL 5.0.3 及更高版本中,VARCHAR 的有效最大長度取決於最大行大小(65,535 位元組,所有列共享)和使用的字元集。例如,utf8 字元每個字元最多需要三個位元組,因此使用 utf8 字元集的 VARCHAR 列最多可以宣告為 21,844 個字元。

請記住,最大行大小的限制是 65,535 位元組。這意味著包括所有列在內,總大小不能超過 65,535 位元組。

讓我們看看如果違反了這個限制會發生什麼:

這是一個包含兩列的表,“one” 是長度為 32,765 的 varchar,“two” 是 32766。

長度 = 32765 + 2 + 32766 + 2 = 65535。

CREATE TABLE IF NOT EXISTS `mytable` (
`one` varchar(32765) NOT NULL,
`two` varchar(32766) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

現在讓我們增加列長度:

CREATE TABLE IF NOT EXISTS `mytable` (
`one` varchar(32767) NOT NULL,
`two` varchar(32770) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

上面給出了以下錯誤:

#1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs

上文字身指出:

The maximum row size is 65,535 bytes. If it exceeds, an error will be visible.

更新於:2020年6月24日

5K+ 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告