zoukankan      html  css  js  c++  java
  • MySQL----ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

    1、问题描述

    在导入同事提供的一个sql文件时候,出现了一个1071错误,总结学习一下:

    2、分析问题

    错误的字面意思是说mysql字段设置的值太长了,不能大于767个字节,在网上找了一些资料后才知道原理:

    当我们给表建立索引时,数据库会计算key的长度是累加所有Index用到的字段的char长度后再按下面比例乘起来不能超过限定的key长度(myisam和innodb存储引擎下长度限制分别为1000 bytes和767 bytes)

    latin1 = 1 byte = 1 character 
    uft8 = 3 byte = 1 character 
    gbk = 2 byte = 1 character 
    

    3.解决问题

    1)单列索引长度限制

    2) 组合索引长度限制

    对于innodb存储引擎,多列索引的长度限制如下:

    每个列的长度不能大于767 bytes;所有组成索引列的长度和不能大于3072 bytes

    对于myisam存储引擎,多列索引长度限制如下:

    每个列的长度不能大于1000 bytes,所有组成索引列的长度和不能大于1000 bytes

  • 相关阅读:
    js操作
    函数知识点补充
    css---position
    css-浮动
    css-边界重叠以及边界塌陷
    css
    css文本类型操作
    POJ 2828 线段树活用
    POJ 3468 线段树
    POJ 3013 SPFA算法,邻接表的使用
  • 原文地址:https://www.cnblogs.com/luxiaojun/p/7065561.html
Copyright © 2011-2022 走看看