什么是错误的,这个修改表的命令:

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) ;

如果我放下线

  ADD CONSTRAINT `fk_1` FOREIGN KEY (`RuleId` ) REFERENCES `Rules` (`RuleId` ) ON DELETE NO ...

其工作,

错我是:

Error Code : 1005
Can't create table '..' (errno: 121)

我怎么可以添加一个外国的关键和指数在同一场 ?

更新:

我试着单独对2的查询,第一添加的索引之后,添加外国的关键,该索引的增加,但第二个查询不工作!

当我的名称更改的外键(如:'fk_2'),并试图运行我得到一个错误:错误代码:1452不能增加或更新儿童行:外键约束失败

有帮助吗?

解决方案

首先创建索引和第二外键约束。 MySQL需要一个索引创建外键,这就是为什么你必须先创建索引。使用单独的语句,以及

其他提示

我恰好有同样的问题。

什么我发现是,如果已经存在在你的数据库中的另一个外键具有完全相同的名称不能添加一个外键。即使该另一外键是在不同的表中。

  

错误1005(HY000):无法创建表 './MyDB/#sql-e4a_c715.frm'(错误:121)   正如上面提到的,你会得到这个消息,如果你想添加一个约束与已经用于其他地方的名称。

(来自两者这里

所以只是将其重命名为随机检查,如果我是正确的..

我得到这个错误后相结合的模式Ddl从N Django应用程序的使用"manage.py sqlall"的命令。

我发现MySQL言要求发言以进行分组,通过 种类 在这个秩序。具体而言,所有ALTER TABLE...加...外交钥匙... 必须 发生最后一个,或MySQL将提高这一错误。

  1. CREATE TABLE...
  2. 创建指数...
  3. 改变表table_name加约束的名外国钥匙...
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top