mysql 创建表字段长度范围_MySQL 建表字段长度的限制

在MySQL中创建表时,遇到字段长度限制问题。当单行记录长度超过65535字节(不包括BLOBs)时,会报错。如果单个varchar字段超过一定长度(如30000对于utf8编码),会自动转换为TEXT类型。需要注意的是,varchar最大长度受存储限制和编码长度限制,如utf8编码下最大为21845。
摘要由CSDN通过智能技术生成

脑补,varchar(N),N指的是最大字符数,不是字节数。

先上测试说明:

在MySQL建表时,遇到一个奇怪的现象:

root@localhost : test 10:30:54>CREATE TABLE tb_test (

-> recordid varchar(32) NOT NULL,

-> areaShow varchar(10000) DEFAULT NULL,

-> areaShow1 varchar(10000) DEFAULT NULL,

-> areaShow2 varchar(10000) DEFAULT NULL,

-> PRIMARY KEY (recordid)

-> ) ENGINE=INNODB DEFAULT CHARSET=utf8;

ERROR 1118 (42000): 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

报错

root@localhost : test 10:31:01>CREATE TABLE tb_test (

-> recordid varchar(32) NOT NULL,

-> areaShow varchar(30000) DEFAULT NULL,

-> areaShow1 varchar(30000) DEFAULT NULL,

-> areaShow2 varchar(30000) DEFAULT NULL,

-> PRIMARY KEY (recordid)

-> ) ENGINE=INNODB DEFAULT CHARSET=utf8;

Query OK, 0 rows affected, 3 warnings (0.26 sec)

可以建立,只是类型被转换了。

root@localhost : test 10:31:14>show warnings;+-------+------+----------------------------------------------------+

| Level | Code | Message |

+-------+------+------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值