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

1、现象

在mysql5.5版本中执行如下SQL建表语句

CREATE TABLE `oauth_client_details` (
  `client_id` VARCHAR(256) CHARACTER SET utf8 NOT NULL,
  `resource_ids` VARCHAR(256) CHARACTER SET utf8 DEFAULT NULL,
  `client_secret` VARCHAR(256) CHARACTER SET utf8 DEFAULT NULL,
  `scope` VARCHAR(256) CHARACTER SET utf8 DEFAULT NULL,
  `authorized_grant_types` VARCHAR(256) CHARACTER SET utf8 DEFAULT NULL,
  `web_server_redirect_uri` VARCHAR(256) CHARACTER SET utf8 DEFAULT NULL,
  `authorities` VARCHAR(256) CHARACTER SET utf8 DEFAULT NULL,
  `access_token_validity` INT(11) DEFAULT NULL,
  `refresh_token_validity` INT(11) DEFAULT NULL,
  `additional_information` VARCHAR(256) CHARACTER SET utf8 DEFAULT NULL,
  `autoapprove` VARCHAR(256) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`client_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

执行时报如下错:

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

2、解决办法

第一步:修改mysql配置文件,我的路径是:C:\Program Files\MySQL\MySQL Server 5.5\my.ini

增加如下配置:

innodb_large_prefix = 1 
innodb_file_format = Barracuda 
innodb_file_per_table = 1

第二步:在sql语句后面增加 ROW_FORMAT = DYNAMIC,如下所示:

CREATE TABLE `oauth_client_details` (
  `client_id` VARCHAR(256) CHARACTER SET utf8 NOT NULL,
  `resource_ids` VARCHAR(256) CHARACTER SET utf8 DEFAULT NULL,
  `client_secret` VARCHAR(256) CHARACTER SET utf8 DEFAULT NULL,
  `scope` VARCHAR(256) CHARACTER SET utf8 DEFAULT NULL,
  `authorized_grant_types` VARCHAR(256) CHARACTER SET utf8 DEFAULT NULL,
  `web_server_redirect_uri` VARCHAR(256) CHARACTER SET utf8 DEFAULT NULL,
  `authorities` VARCHAR(256) CHARACTER SET utf8 DEFAULT NULL,
  `access_token_validity` INT(11) DEFAULT NULL,
  `refresh_token_validity` INT(11) DEFAULT NULL,
  `additional_information` VARCHAR(256) CHARACTER SET utf8 DEFAULT NULL,
  `autoapprove` VARCHAR(256) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`client_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 ROW_FORMAT = DYNAMIC;

第三步:重启mysql 服务,执行语句

别问我为什么,照着做就是了

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值