MYSQL alter table - 添加INDEX + FOREIGN KEY给出错误1005

Hai*_*vgi 2 mysql indexing foreign-keys alter-table mysql-error-1005

这个alter table命令有什么问题:

ALTER TABLE `lp` 
ADD COLUMN `RuleId` INT(10) NOT NULL DEFAULT -111 AFTER `Weight` , , 
ADD CONSTRAINT `fk_1` FOREIGN KEY (`RuleId` ) REFERENCES `Rules` (`RuleId` ) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD INDEX `fk_1` (`RuleId` ASC) ;
Run Code Online (Sandbox Code Playgroud)

如果我放弃了

  ADD CONSTRAINT `fk_1` FOREIGN KEY (`RuleId` ) REFERENCES `Rules` (`RuleId` ) ON DELETE NO ...
Run Code Online (Sandbox Code Playgroud)

这是工作 ,

我得到的错误是:

Error Code : 1005
Can't create table '..' (errno: 121)
Run Code Online (Sandbox Code Playgroud)

如何在同一个字段上添加FOREIGN KEY和INDEX

更新:

我尝试分开2个查询,首先添加INDEX,然后添加FOREIGN KEY,添加索引,但第二个查询不起作用!

当我更改外键的名称(如:'fk_2')并尝试运行它我得到一个错误:错误代码:1452无法添加或更新子行:外键约束失败

Fra*_*ens 5

首先创建索引,然后创建外键约束.MySQL需要一个索引来创建外键,这就是你必须首先创建索引的原因.也可以使用单独的语句.