zoukankan      html  css  js  c++  java
  • Specified key was too long; max key length is 767 bytes

    MySQL>  use test; create table test(a varchar(512) primary key, b varchar(1024));
    Database changed
    ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
    drop table if exists test; 
    create table test(test varchar(767) primary key)charset=latin5; 
    -- 成功 
    
    drop table if exists test; 
    create table test(test varchar(768) primary key)charset=latin5; 
    -- 错误  
    -- ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes 
    
    drop table if exists test; 
    create table test(test varchar(383) primary key)charset=GBK; 
    -- 成功 
    
    drop table if exists test; 
    create table test(test varchar(384) primary key)charset=GBK; 
    -- 错误  
    -- ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes 
    
    drop table if exists test; 
    create table test(test varchar(255) primary key)charset=UTF8; 
    -- 成功 
    
    drop table if exists test; 
    create table test(test varchar(256) primary key)charset=UTF8; 
    -- 错误  
    -- ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
    原因:
      MySQL的varchar主键只支持不超过768个字节,或者768/2=384个双字节,或者768/3=256个三字节的字段,而GBK是双字节的,UTF-8是三字节的。

    变量设置:
    mysql> show variables like '%char%';
    +--------------------------+--------------------------------------------------+
    | Variable_name            | Value                                            |
    +--------------------------+--------------------------------------------------+
    | character_set_client     | latin1                                           |
    | character_set_connection | latin1                                           |
    | character_set_database   | utf8                                             |
    | character_set_filesystem | binary                                           |
    | character_set_results    | latin1                                           |
    | character_set_server     | utf8                                             |
    | character_set_system     | utf8                                             |
    | character_sets_dir       | /opt/schooner/ac_3.1/mysql/share/mysql/charsets/ |
    +--------------------------+--------------------------------------------------+
    8 rows in set (0.00 sec)
  • 相关阅读:
    iommu分析之smmu v3的实现
    关于virtio_net网卡命名的小问题
    Affinity broken due to vector space exhaustion 问题
    iommu系列之概念解释篇
    获取客户端Mac地址
    SqList *L 和 SqList * &L的区别/学习数据结构突然发现不太懂 小祥我查找总结了一下
    前端页面报表图在线js库
    MybatisPlus自动填充
    SpringBoot集成druid开启内置监控页面
    简单的系统用户权限设计图
  • 原文地址:https://www.cnblogs.com/jing99/p/7768286.html
Copyright © 2011-2022 走看看