1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126

本文介绍了MySQL中遇到Rowsizetoolarge错误时的解决方案,包括调整列数据类型(如VARCHARtoTEXT/BLOB)、减小VARCHAR长度、考虑使用MyISAM引擎、增大InnoDB页大小、分割表结构以及检查存储相关参数,同时强调了备份数据和测试的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

错误1118 - Row size too large通常在MySQL数据库中出现,尤其是在InnoDB存储引擎中。当您尝试创建或更改表,且该表的单行数据量大于InnoDB允许的最大值时,就会发生这个错误。

以下是一些建议的解决方法:

更改列数据类型:

如错误信息所述,将一些列的数据类型从VARCHAR或CHAR更改为TEXT或BLOB类型。这是因为TEXT和BLOB类型的数据存储在溢出页中,不计入行大小限制。

减少VARCHAR的长度:

如果您有某些列定义为VARCHAR(255),但实际上不需要这么长,您可以考虑减少这些列的长度。
使用其他存储引擎:

如果您的应用场景允许,可以考虑使用MyISAM存储引擎,但请注意,与InnoDB相比,MyISAM不支持事务和外键。

增加InnoDB的页大小:

默认情况下,InnoDB的页大小是16KB,但可以更改为32KB或64KB。这样做可以增加单行的最大大小。但这需要在初始化数据库实例时进行,并且会影响整个数据库的性能和空间使用,所以请谨慎考虑。

innodb_page_size=32k

分拆表结构:

考虑将表结构分拆为多个表,以减少单一表的列数量。

检查其他存储相关参数:

例如,确保innodb_strict_mode设置为OFF,但这可能会使其他一些限制变得宽松,所以需要谨慎使用。
最后,请确保在进行任何更改之前备份您的数据,并在测试环境中先进行测试,以确保更改不会导致其他问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值