当前位置:七道奇文章资讯数据防范MySQL防范
日期:2012-04-20 17:23:00  来源:本站整理

MySQL中关于varchar最大长度的问题[MySQL防范]

赞助商链接



  本文“MySQL中关于varchar最大长度的问题[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  被问到一个问题:MySQL中varchar最大长度是多少?这不是一个固定的数字.本文扼要阐明一下限制法则.

  1、限制法则

  字段的限制在字段定义的时刻有以下法则:

  a) 存储限制

  varchar 字段是将实际内容单独存储在聚簇索引之外,内容开首用1到2个字节表示实际长度(长度超越255时需求2个字节),因此最大长度不能超越65535. www.110hack.com

  b) 编码长度限制

  字符范例若为gbk,每个字符最多占2个字节,最大长度不能超越32766;

  字符范例若为utf8,每个字符最多占3个字节,最大长度不能超越21845.

  若定义的时刻超越上述限制,则varchar字段会被强行转为text范例,并产生warning.

  c) 行长度限制

  招致实际利用中varchar长度限制的是一个行定义的长度. MySQL要求一个行的定义长度不能超越65535.若定义的表长度超越这个值,则提醒

  ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs.

  2、计算例子

  举两个例阐明一下实际长度的计算.

  a) 若一个表只有一个varchar范例,如定义为

  create table t4(c varchar(N)) charset=gbk;

  则此处N的最大值为(65535-1-2)/2= 32766.

  减1的缘由是实际施存储从第二个字节开始’;

  减2的缘由是varchar头部的2个字节表示长度;

  除2的缘由是字符编码是gbk. www.110hack.com

  b) 若一个表定义为

  create table t4(c int, c2 char(30), c3 varchar(N)) charset=utf8;

  则此处N的最大值为 (65535-1-2-4-30*3)/3=21812

  减1和减2与上例相同;

  减4的缘由是int范例的c占4个字节;

  减30*3的缘由是char(30)占用90个字节,编码是utf8.

  假如被varchar超越上述的b法则,被强转成text范例,则每个字段占用定义长度为11字节,当然这已经不是“varchar”了.

  作者 丁林.tb


  以上是“MySQL中关于varchar最大长度的问题[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Windows 搭配 IIS7 PHP MySQL 环境
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • mysql数据库插入速度和读取速度的调整记录
  • MySQL Order By索引优化办法
  • MySQL Order By用法分享
  • mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''
  • MySQL Order By Rand()效率解析
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .