MySql工作台:添加外键错误

时间:2018-02-08 15:40:36

标签: mysql

我正在尝试在教程表中添加外键'USERNAME',但是出现了错误。

Executing:
ALTER TABLE `databse`.`tutorial`   
ADD CONSTRAINT `USERNAME`
   FOREIGN KEY (`USERNAME`)
   REFERENCES `databse`.`register` (`USERNAME`)
   ON DELETE CASCADE
   ON UPDATE CASCADE;

 Operation failed: There was an error while applying the SQL script to the database.
 ERROR 1452: Cannot add or update a child row:
a foreign key constraint   fails (`databse`.`#sql-e7c_5`, CONSTRAINT `USERNAME` FOREIGN KEY (`USERNAME`) 
 REFERENCES `register` (`USERNAME`) ON DELETE CASCADE ON UPDATE CASCADE)
 SQL Statement:
  ALTER TABLE `databse`.`tutorial`  
  ADD CONSTRAINT `USERNAME`
  FOREIGN KEY (`USERNAME`)
  REFERENCES `databse`.`register` (`USERNAME`)
  ON DELETE CASCADE
  ON UPDATE CASCADE

外键设置: enter image description here

教程表设置: enter image description here

有什么想法吗?谢谢

我解决了它,我创建了一个新的'教程'表替换'教程'表,并使用相同的方式添加外键,它工作! = =

仍然感谢你的帮助!!

3 个答案:

答案 0 :(得分:0)

如上所述here

  

FOREIGN KEY是一个表中的一个字段(或字段集合),它引用另一个表中的PRIMARY KEY。

在您显示的代码中:您尝试引用" USERNAME"列,它不是您上次捕获的主键

因此,您可以将register表格中的主键更改为USERNAME,也可以将外键更改为引用TutorialName

答案 1 :(得分:0)

你有两个表一个是子表,第二个是父表。所以你需要保证每个子列都有NULL或者父列中有值。

答案 2 :(得分:0)

此问题通常是由于受新外键约束的两列中显示的值不匹配所致。

也就是说,子表中显示的值没有父表中显示的引用。

创建外键时,需要确保:

  1. 表类型支持外键
  2. 外键列上有一个索引
  3. 受外键约束的两列数据类型非常相似,因此可以相互转换
  4. 两列中显示的数据均受外键约束是一致的。