foreign-keys - 尝试使用heidisql在mysql中添加外键

标签 foreign-keys innodb mysql-error-1452 heidisql

我一直在尝试使用 heidisql 向我的表中添加外键,但一直收到错误 1452。

仔细阅读后,我确保所有表都在 InnoDB 上运行,并检查它们是否具有相同的数据类型,我添加 key 的唯一方法是删除所有我不打算这样做的数据,因为我有在这上面花了好几个小时。

这是我的表创建代码:

CREATE TABLE `data` (
`ID` INT(10) NOT NULL AUTO_INCREMENT,
#bunch of random other columns stripped out
`Ability_1` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
#more stripped tables
`Extra_Info` SET('1','2','3','Final','Legendary') NOT NULL DEFAULT '1' COLLATE 'utf8_unicode_ci',
PRIMARY KEY (`ID`),
UNIQUE INDEX `ID` (`ID`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
AUTO_INCREMENT=650;

这是表 2
CREATE TABLE `ability` (
`ability_ID` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
#stripped columns
`Name_English` VARCHAR(12) NOT NULL COLLATE 'utf8_unicode_ci',
PRIMARY KEY (`ability_ID`),
UNIQUE INDEX `ability_ID` (`ability_ID`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
AUTO_INCREMENT=165;

最后这里是创建代码和错误。
ALTER TABLE `data`
ADD CONSTRAINT `Ability_1` FOREIGN KEY (`Ability_1`) REFERENCES `ability` (`ability_ID`) ON UPDATE CASCADE ON DELETE CASCADE;
/* SQL Error (1452): Cannot add or update a child row: a foreign key constraint fails (`check`.`#sql-ec0_2`, CONSTRAINT `Ability_1` FOREIGN KEY (`Ability_1`) REFERENCES `ability` (`ability_ID`) ON DELETE CASCADE ON UPDATE CASCADE) */

如果还有什么我可以提供的,请告诉我这真的很困扰我。我也在使用 5.5.27 - xampp 安装程序附带的 MySQL 社区服务器 (GPL)。

最佳答案

enter image description here

如果您使用的是 HeidiSQL,这很容易。

只看图片,点击+添加添加外键。

我更喜欢 GUI 创建表格及其属性的方式,因为它可以节省时间并减少错误。

关于foreign-keys - 尝试使用heidisql在mysql中添加外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16050778/

相关文章:

php - 数据库表设计多个表的外键

mysql - BEFORE INSERT INTO 只有一个自增列的表无法触发

MySQL回滚事务的方法有哪些有效?

mysql - 我的数据库出现 SQL 1452 错误

MySQL 外键约束 - 错误 1452 - 无法添加或更新子行

mysql - 如何根据父级进行外键更新

mysql - 删除表的外键约束错误

mysql - 在多对多相关表中进行高效搜索

mysql - 导出和导入外键

mysql - 错误 1452 外键失败