无法在MySQL Workbench中创建外键

时间:2016-08-04 20:50:54

标签: mysql mysql-workbench

我有两张桌子,让我们来电话table1table2

  • table1的主键是CHAR(36),非空,且唯一。
  • table2中我想尝试制作FK的列也是CHAR(36),非空和唯一。
  • 两个表都没有记录。
  • table1有四个外键,都指向其他表。 (他们都没有指向table2。)

当我尝试在table1 Workbench中将table2的PK定义为FK时,我不会选择该字段。无论我做了什么,都不会选中table2中列的复选框。

2 个答案:

答案 0 :(得分:0)

为了创建这个外键,我不得不绕过Workbench的GUI直接运行它。

ALTER TABLE `my_schema`.`table_two` 
ADD INDEX `fk_to_table_one_pk_idx` (`table_two_column` ASC);
ALTER TABLE `my_schema`.`table_two` 
ADD CONSTRAINT `fk_to_table_one_pk`
    FOREIGN KEY (`table_two_column`)
    REFERENCES `my_schema`.`table_one` (`table_one_column`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE;

我运行了这个查询,ta-friggin-da,FK就位,没有抛出任何错误。我听说Workbench非常不稳定,我认为这证实了这一点。

在我使用FK之后,我通过GUI将table2中的列标记为PK而没有问题。 SQL可能在标记为PK的table2列中运行得很好,但我没有这样运行,所以我无法确认。

答案 1 :(得分:0)

尝试DISABLE KEYS或

SET FOREIGN_KEY_CHECKS=0;

确保

SET FOREIGN_KEY_CHECKS=1;

后。