GreatSQL社区

搜索

[已解决] 建表不成功,ROW_FORMAT=COMPACT存储分析

699 4 2022-9-23 14:43
本帖最后由 nyp30 于 2022-9-23 14:45 编辑

建表语句:


CREATE TABLE `t1` (
  `f1` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `f2` varchar(255) DEFAULT NULL,
  `f3` varchar(255) DEFAULT NULL COMMENT '',
  `f4` varchar(2000) CHARACTER SET utf8mb4  DEFAULT NULL,
  `f5` varchar(2000) CHARACTER SET utf8mb4 DEFAULT NULL,
  `f6` varchar(2000) DEFAULT NULL,
  `f7` varchar(100) DEFAULT NULL,
  `f8` varchar(100) DEFAULT NULL,
  `f9` int DEFAULT NULL,
  `f10` int DEFAULT NULL,
  `f11` varchar(255) DEFAULT NULL,
  `f12` varchar(255) DEFAULT NULL,
  `f13` varchar(255) DEFAULT NULL COMMENT '',
  `f14` varchar(255) DEFAULT NULL COMMENT '',
  `f15` varchar(255) DEFAULT NULL,
  `f16` varchar(255) DEFAULT NULL,
  `f17` bit(1) NOT NULL DEFAULT b'0' COMMENT '',
  `f18` bit(1) DEFAULT b'0',
  PRIMARY KEY (`f1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='';
微信图片_20220923140657.png

故障:在MySQL8.0.26下可以执行成功,升级到8.0.29后执行失败。是否是BUG?有大神能分析这个格式下为啥有问题吗?把3个2000长度的字段如果合并为一个字段就算长度为8000也不报错,就少了两个字段,但我去掉两个100长度的字段也不行的。


全部回复(4)
yejr 2022-9-23 14:53:39
可以看下8.0.29之后的一个新变化

  1. InnoDB: When using COMPACT or REDUNDANT row format, it was possible to create a table that exceeded the maximum row size, which could eventually result in 'Row size too large' errors when inserting data. BLOB prefixes were not included in the record size check performed during the CREATE TABLE operation. (Bug #33399379)
复制代码


详情见 https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-29.html
yejr 2022-9-23 14:54:20
或者把row format改成dynamic就行了
nyp30 2022-9-23 15:03:41
yejr 发表于 2022-9-23 14:54
或者把row format改成dynamic就行了

是的,主要是这样所有应用都需要核查修改,活大。还有一个可以设置innodb_strict_mode=OFF,这个最简单,就是还没有理清楚影响范围有多大,不敢动。
yejr 2022-9-23 21:28:20
nyp30 发表于 2022-9-23 15:03
是的,主要是这样所有应用都需要核查修改,活大。还有一个可以设置innodb_strict_mode=OFF,这个最简单, ...

都上8.0版本了,row_format也跟着升级下吧 :)
nyp30

2

主题

0

博客

9

贡献

新手上路

Rank: 1

积分
14

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-11-24 06:14 , Processed in 0.020280 second(s), 14 queries , Redis On.
快速回复 返回顶部 返回列表