[英]MYSQL alter table - add INDEX + FOREIGN KEY give 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) ;
如果我放弃线
ADD CONSTRAINT `fk_1` FOREIGN KEY (`RuleId` ) REFERENCES `Rules` (`RuleId` ) ON DELETE NO ...
是工作 ,
我得到的错误是:
Error Code : 1005
Can't create table '..' (errno: 121)
如何在同一字段上添加外键和索引 ?
我尝试分离为2个查询,首先添加INDEX,然后添加FOREIGN KEY,添加索引,但是第二个查询不起作用!
当我更改外键的名称(例如:'fk_2')并尝试运行它时,出现错误:错误代码:1452无法添加或更新子行:外键约束失败
首先创建索引,然后创建外键约束。 MySQL需要一个索引来创建外键,这就是为什么必须首先创建索引的原因。 也使用单独的语句。
我完全有同样的问题。
我发现,如果数据库中已经存在另一个具有完全相同名称的外键,则无法添加外键。 即使那个其他外键在另一个表上。
错误1005(HY000):无法创建表'./MyDB/#sql-e4a_c715.frm'(errno:121)如上所述,如果您尝试添加名称为已经在其他地方使用了。
(从这里拍摄)
因此,只需将其重命名为随机值即可检查我是否正确。
使用“ manage.py sqlall”命令从N个Django应用程序组合模式DDL之后,出现此错误。
我发现,MySQL的DDL要求语句通过一种顺序分组。 具体来说,所有ALTER TABLE ... ADD ... FOREIGN KEY ... 必须最后出现,否则MySQL会引发该错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.