设为首页 加入收藏

TOP

MySQL:Specified key was too long; max key length is 767 bytes.
2019-09-23 18:11:06 】 浏览:57
Tags:MySQL:Specified key was too long max length 767 bytes.

建表语句:

CREATE TABLE IF Not EXISTS api (
    api  varchar(500) not null ,
    method varchar(50) not null default 'POST',

    PRIMARY key (api,method)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

报错: 

Specified key was too long; max key length is 767 bytes.

原因:

  我这里使用 api,method 来做 api 表的联合主键,此时会根据这两个字段建立索引,charset 是 utf8 ,也就是一个字符3个字节, 那么总共索引的字节为: 500*3+50*3 = 1650 个字节,而mysql 要求的索引是 767 个字节。

解决:

  将 api 字段改为 varchar(200), method 改为 varchar(20)

 

或者你可以通过限定字段的前n个字符为索引,参考:https://blog.csdn.net/u010429286/article/details/80418666 来解决

UNIQUE KEY `uniq_store_code` (`record_date`,`store_code`(20),`sku_division_code`(20),`abc`(20))

表示后面store_code,sku_division_code,abc三个字段取前20字符作为唯一索引,这样的话就是长度就不会超出。

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇基于Redis扩展模块的布隆过滤器使.. 下一篇mysql json字段

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目