报错信息

执行的SQL语句出错:
CREATE TABLE `business_user` (
  `id` varchar(19) NOT NULL COMMENT '主键',
  `password` varchar(255) DEFAULT NULL COMMENT 'password',
  `username` varchar(255) DEFAULT NULL COMMENT '用户名',
  `identity` int(1) DEFAULT NULL COMMENT '商户身份(1:员工,2:老板)',
  `business_name` varchar(100) DEFAULT NULL COMMENT '商户名称',
  `address` varchar(100) DEFAULT NULL COMMENT '商户地址',
  `coordinate` varchar(100) DEFAULT NULL COMMENT '商户地址坐标(经度,纬度)',
  `auth_status` int(1) DEFAULT NULL COMMENT '认证状态(0:未认证,1:认证通过,2:认证不通过)',
  `license_img_url` varchar(255) DEFAULT NULL,
  `salt` varchar(255) DEFAULT NULL COMMENT '随机盐',
  `phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
  `avatar` varchar(255) DEFAULT NULL COMMENT '头像',
  `dept_id` int(11) DEFAULT NULL COMMENT '部门ID',
  `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `lock_flag` char(1) DEFAULT '0' COMMENT '0-正常,9-锁定',
  `del_flag` char(1) DEFAULT '0' COMMENT '0-正常,1-删除',
  `wx_openid` varchar(32) DEFAULT NULL COMMENT '微信openid',
  `qq_openid` varchar(32) DEFAULT NULL COMMENT 'QQ openid',
  `tenant_id` int(11) NOT NULL DEFAULT '1' COMMENT '所属租户',
  PRIMARY KEY (`id`),
  UNIQUE KEY `user_username_uindex` (`username`),
  UNIQUE KEY `user_business_name_uindex` (`business_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
错误信息:Specified key was too long; max key length is 767 bytes

分析

数据库采用的引擎为InnoDB,此引擎支持索引长度为767字节,而username varchar(255)中255*4显然超过了767。

解决办法

修改数据库参数:innodb_large_prefix=ON,或者varchar长度设置小些,如:varchar(64)