MySQL Error number: MY-013963; Symbol: ER_IB_DUPLICATE_KEY; SQLSTATE: HY000

文档解释

Error number: MY-013963; Symbol: ER_IB_DUPLICATE_KEY; SQLSTATE: HY000

Message: %s: table=%s, index=%s, n_uniq=%zu, n_fields=%zu, lhs=(%s), rhs=(%s)

错误说明:

MY-013963 错误码ER_IB_DUPLICATE_KEY,属于MySQL SQLSTATE HY000错误代码集。该报错信息指出索引已经存在,一旦再次尝试创建就会导致重复,导致操作失败,出现该报错。

常见案例

ER_IB_DUPLICATE_KEY 常见的案例就是:当执行CREATE TABLE,指定了一个unique index时,若其中的字段已经被创建的表的同样的字段被指定为unique index,此时即会报错。

解决方法:

1. 查看表的索引定义:当使用 ALTER TABLE语句时,需要定义索引,应检查表的索引定义,确保没有手动添加具有相同名称的第二个相同索引;

2. 删除重复索引:若发现了重复索引,可以删除其中某一个,成功删除重复索引;

3. 重命名索引:也可以给重复索引重新命名,避开冲突;

4. 正确使用语句:在使用ALTER TABLE建立索引时,加上 IF NOT EXISTS,MySQL就可以在索引已经存在,就不会再要求建立索引了;

5. 修改ALTER TABLE语句:可以拆解Alter table语句,把原来的子句拆分成多个语句运行,分别检查每一个建立索引子句是否索引已经存在;

6. 将多个索引类型修改成一个:当存在多个索引类型但是看起来相似,可以将其中几个索引类型合并成一个。

你可能感兴趣的