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

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日

悬赏问题

  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥15 对于这个问题的算法代码
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题