MYSQL 更改表 - 添加 INDEX + FOREIGN KEY 给出错误 1005

标签 mysql foreign-keys indexing 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) ;

如果我掉线

  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需要一个索引来创建外键,这就是为什么你必须先创建索引。也使用单独的语句。

关于MYSQL 更改表 - 添加 INDEX + FOREIGN KEY 给出错误 1005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3455805/

相关文章:

java - 如何防止 Hibernate + c3p0 + MySql 创建大量 hibernate 连接?

java - 如何保护 MySQL 数据免受反编译器的侵害?

mysql - 如何防止一对外键在我的表中重复?

java - 如何在 Lucene 3.5.0 中提取文档术语 vector

performance - Sphinx中 `@geodist`排序/搜索是如何实现的?

mysql - 选择数据不在表的其余部分中的日期范围的计数

php - 没有 ORM 或 API 框架的模型架构

mysql - 删除级联不起作用

MySQL 表未创建错误 #1064

Matlab:索引向量值与固定值相同