carrot 1 2023-07-28 12:31 采纳率: 33.8%
浏览 21
已结题

mysql插入字段时报错Row size too large

新部署的一套mysql8.0.29。往xx表中插入字段时,alter table xx add column zz varchar(10); 提示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 c
olumns to TEXT or BLOBs。同样的命令,我在本地的8.0.27的mysql上,可以正常插入同样的表中

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-28 14:25
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 以下回答由chatgpt基于相关博客总结生成:

      问题分析:

      根据错误提示 "Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126",这个问题是由于MySQL 8.0.29版本中的表行大小限制导致的。在此版本中,行的最大大小为8126字节,不包括BLOB列和其他存储开销。

      解决方案:

      要解决这个问题,有几个可能的解决方案可以尝试:

      1. 修改表的行格式: 首先,请确认表的行格式是否为 DYNAMICCOMPRESSED。可以通过执行以下命令来查看当前表的行格式: sql SHOW CREATE TABLE xx; 如果行格式不是 DYNAMICCOMPRESSED,可以尝试将其修改为 DYNAMIC 类型,因为 DYNAMIC 类型可以支持更大的行大小。执行以下命令修改行格式: sql ALTER TABLE xx ROW_FORMAT=DYNAMIC; 修改后,再次尝试执行插入字段的命令。

      2. 减小字段的大小: 如果插入的字段大小不是关键,可以将字段的长度减小为更小的值。例如,将 varchar(10) 修改为 varchar(5) 或更小的长度。执行以下命令修改字段的长度: sql ALTER TABLE xx MODIFY COLUMN zz varchar(5); 修改后,再次尝试执行插入字段的命令。

      3. 将某些字段改为 TEXT 或 BLOB 类型: 如果以上两个解决方案都不适用,那么可能需要将某些字段类型更改为 TEXT 或 BLOB 类型。这些类型不计入行的大小限制。但请注意,这样做可能会影响应用程序的查询性能,因为 TEXT 和 BLOB 类型的字段存储在独立的页中,需要额外的操作来访问它们。执行以下命令将字段类型更改为 TEXT 或 BLOB: sql ALTER TABLE xx MODIFY COLUMN zz TEXT; 或者 sql ALTER TABLE xx MODIFY COLUMN zz BLOB; 修改后,再次尝试执行插入字段的命令。

      如果上述解决方案都不适用,那可能需要进一步检查表的设计和数据模型,以确定是否需要重新设计表结构或优化数据存储方式。

      注意: 在执行任何修改表结构的操作之前,请务必备份数据库,以防止意外数据丢失。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月1日
  • 创建了问题 7月28日

悬赏问题

  • ¥15 配置hadoop时start-all.sh老是启动失败
  • ¥30 这个功能用什么软件发合适?
  • ¥60 微信小程序,取消订单,偶尔订单没有改变状态
  • ¥15 用pytorch实现PPO算法
  • ¥15 关于调制信号的星座图?
  • ¥30 前端传参时,后端接收不到参数
  • ¥15 这是有什么问题吗,我检查许可证了但是显示有呢
  • ¥15 机器学习预测遇到的目标函数问题
  • ¥15 Fluent,液体进入旋转区域体积分数不连续
  • ¥15 java linux下将docx文件转pdf