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

  • 相关阅读:
    EasyUi中使用自定义图标
    EasyUi初始配置
    struts2文件上传
    转换器
    Oracle 视图
    存储过程的优缺点
    Oracle 序列详解
    plsql使用技巧
    MYSQL和ORACLE的一些区别
    JAVA操作Excle之Poi(二)批量导出Excle数据
  • 原文地址:https://www.cnblogs.com/luxiaojun/p/7065561.html
Copyright © 2011-2022 走看看