zoukankan      html  css  js  c++  java
  • MySQL单行长度限制问题

    前段时间,看MySQL的行格式的时候,发现MySQL的单行限制以及超过限制时自动类型转换。
    1. MySQL版本:5.7.26

    2. 关闭严格模式,否则直接报错。

    3. utf8编码

    -- 第一种情况
    CREATE TABLE ts_test (
        id int(11) unsigned NOT NULL auto_increment,
        a varchar(10000) DEFAULT NULL,
        b varchar(10000) DEFAULT NULL,
        n varchar(10000) DEFAULT NULL,
        PRIMARY KEY (id)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8;
    [Err] 1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
    
    -- 第二种情况
    CREATE TABLE ts_test (
        id int(11) unsigned NOT NULL auto_increment,
        a varchar(30000) DEFAULT NULL,
        b varchar(30000) DEFAULT NULL,
        c varchar(30000) DEFAULT NULL,
        PRIMARY KEY (id)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8;
    Query OK, 0 rows affected, 3 warnings (0.26 sec)
    
    -- 表结构
    mysql> show create table ts_testG
    *************************** 1. row ***************************
           Table: ts_test
    Create Table: CREATE TABLE `ts_test` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `a` mediumtext,
      `b` mediumtext,
      `c` mediumtext,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)

    MySQL在建表的时候有个限制:MySQL要求一个行的定义长度不能超过65535。

    (1)单个字段如果大于65535,则转换为TEXT 。
    (2)单行最大限制为65535,这里不包括TEXT、BLOB。

    第一种情况:
    单个字段长度:varchar(10000) ,字节数:10000*3 +(1 or 2) = 30000 ,小于65535,可以建立。
    单行记录长度:varchar(10000)*3,字节数:30000*3 +(1 or 2) = 90000,大于65535,不能建立,所以报错

    第二种情况:
    单个字段长度:varchar(30000) ,字节数:30000*3+(1 or 2) = 90000 , 大于65535,需要转换成TEXT,才可以建立。所以报warnings。
    单行记录长度:varchar(30000)*3,因为每个字段都被转换成了TEXT,而TEXT没有限制,所以可以建立表。

    BY:liyy

  • 相关阅读:
    Frequency of String CodeForces
    Sign on Fence CodeForces
    洛谷 P3332 [ZJOI2013]K大数查询 || bzoj3110
    spoj DYNALCA
    洛谷 P2824 [HEOI2016/TJOI2016]排序 (线段树合并)
    洛谷 P3203 [HNOI2010]弹飞绵羊 || bzoj2002
    bzoj 1036: [ZJOI2008]树的统计Count
    Shiro Authenticator认证器
    Shiro 十分钟教程
    Shiro 架构
  • 原文地址:https://www.cnblogs.com/widgetbox/p/13215288.html
Copyright © 2011-2022 走看看