weixin_42609449 2023-03-18 11:38 采纳率: 66.7%
浏览 31
已结题

mysql创建表时出错ERROR 1118 (42000): Row size too large.(> 8126).

我想要达到的结果

mysql创建表时出错ERROR 1118 (42000): Row size too large.(> 8126).
MySQL8.0.32
创建一张表,包含263列,其中varchar类型有217个,其余大多是TIMESTAMP和INT
第一次执行出错后 我把varchar(>1000)的8个列设置成了TEXT类型,还是出错
第二次 有继续调整 把varchar(=200) 的也设置成TEXT,同时修改varchar(=100)—>varchar(50),依然出错
两次调整后,表中有3个varchar(100),75个varchar(50),123个varchar(20)
我现在考虑把varchar都改成TEXT类型,又担心后续使用TEXT类型不方便,希望得到更好的解决办法

  • 写回答

6条回答 默认 最新

  • 追cium 2023-03-18 11:43
    关注

    参考GPT和自己的思路:

    这个问题是由于表中行的大小超过了MySQL所允许的最大值(8126 bytes)而导致的。在这种情况下,您可以尝试以下解决方案:

    1. 减少行的大小:尝试删除一些不必要的列或将一些varchar类型转换为更小的类型(如char或text)。

    2. 分割表:如果您需要所有列,可以考虑将表分割成几个表,并使用外键将它们连接起来。

    3. 更改配置:如果您使用的是InnoDB存储引擎,则可以尝试在mysql的配置文件中更改innodb_log_file_sizeinnodb_page_size的值以增加行的大小限制。

    总的来说,建议您重新审视您的数据库设计,考虑优化表结构和数据类型以提高性能和有效性。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 3月28日
  • 已采纳回答 3月20日
  • 创建了问题 3月18日

悬赏问题

  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)
  • ¥15 关于并联谐振电磁感应加热
  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥66 如何制作支付宝扫码跳转到发红包界面
  • ¥15 pnpm 下载element-plus
  • ¥15 解决编写PyDracula时遇到的问题