幽兰生空谷
--绝世独自开

MySql报[2023-02-20 14:51:54] [42000][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有关存储引擎的问题解决

问题背景:

在开发项目时,想要复制一份线上的表结构,在本地创建表。根据线上的表生成的创建语句大概如下:

create table demo(
    name varchar(1845) not null ,
    context varchar(10000) not null ,
    english_name varchar(10000) not null
)ENGINE = MyISAM DEFAULT CHARSET = utf8mb3;

执行会报:

[2023-02-20 14:51:54] [42000][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

翻译:

行大小太大。所用表类型(不包括BLOB)的最大行大小为65535。这包括存储开销,请查看手册。您必须将某些列更改为TEXT或BLOB

Tip: 可以看到,报错信息中已经包含了解决方案,可以更改字段的类型,来实现创建表。可是我并不像改变字段的类型,因为线上的表字段类型可以创建成功,说明我写的创建语句多少还是有些问题。有的方案是更改存储引擎。如下:

create table demo(
    name varchar(1845) not null ,
    context varchar(10000) not null ,
    english_name varchar(10000) not null
)ENGINE = MyISAM DEFAULT CHARSET = utf8mb3;

有些人好像成功了,我试了一下,并不可以。

解决方案:

utf8mb3utf8mb4
1字符 = 3字节1字符 = 4字节
存储上限列总和 varchar(21845) 65535/3存储上限列总和 varchar(16383) 65535/4
一个汉字、一个字母都是一个字符

根据排序规则合理分配varchar()的长度。

重新分配后的sql如下:

create table demo(
    name varchar(1844) not null ,
    context varchar(10000) not null ,
    english_name varchar(10000) not null
)DEFAULT CHARSET = utf8mb3;
赞(1) 打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《MySql报[2023-02-20 14:51:54] [42000][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有关存储引擎的问题解决》
文章链接:https://www.itheibai.com/archives/1163
免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途,网站会员捐赠是您喜欢本站而产生的赞助支持行为,仅为维持服务器的开支与维护,全凭自愿无任何强求。

评论 抢沙发

评论前必须登录!

 

养成“打赏”的好习惯,从我做起!

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册