MySQL數據庫 行超限
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
[email protected] 03:54: [test]> create table t4(c int, c2 char(30), c3 varchar(21813)) charset=utf8;
ERROR 1118 (42000): 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
[email protected] 03:55: [test]> create table t4(c int, c2 char(30), c3 varchar(21812)) charset=utf8;
Query OK, 0 rows affected (0.04 sec)
字符類型若為gbk,每個字符最多占2個字節,最大長度不能超過32766;
字符類型若為utf8,每個字符最多占3個字節,最大長度不能超過21845。
則此處N的最大值為 (65535-1-2-4-30*3)/3=21812
減1的原因是實際行存儲從第二個字節開始‘;
減2的原因是varchar頭部的2個字節表示長度;
減4的原因是int類型的c占4個字節;
減30*3的原因是char(30)占用90個字節,編碼是utf8。
mysql的vachar字段的類型雖然最大長度是65535,但是並不是能存這麽多數據,最大可以到65533(不允許非空字段的時候),當允許非空字段的時候只能到65532。
本文出自 “晴空” 博客,謝絕轉載!
MySQL數據庫 行超限