【问题描述】
用Nivacat连接mysql实例。通过数据传输导入一批表,修改这些表的引擎为sequoiadb。其中有一个表修改失败,报错:error 40291 from storage engine。
其建表语句为:
CREATE TABLE ‘sys_district'(
'id' int(11) NOT NULL COMMENT '三级联动-区县级表',
'city_id' int(11) DEFAULT NULL COMMENT '城市id',
'district_name' varchar(100) DEFAULT NULL COMMENT '地区名称',
'short_name' varchar(40) DEFAULT NULL COMMENT '简称',
'create_time' varchar(40) DEFAULT NULL COMMENT '创建时间',
'update_time' varchar(40) DEFAULT NULL COMMENT '更新时间',
PRIMARYKEY('id'),
UNIQUE KEY 'sys_district_id' ('id') USING BTREE,
KEY 'sys_district_city_id' ('city_id') USING BTREE,
KEY 'sys_district_distruct_name' ('distruct_name') USING BTREE
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='区县级表;
【解决办法】
40291对应Sequoiadb的 -291 错误(-291:已经存在一个可以处理本场景的索引)。
从建表语句可以看出,主键‘id’(PRIMARYKEY(‘id’))和唯一索引’id’( UNIQUE KEY ‘sys_district_id’ (‘id’) )重复了。