【问题标题】:Foreign Keys in MySQL Workbench not working?MySQL Workbench 中的外键不起作用?
【发布时间】:2016-07-10 13:50:06
【问题描述】:

我在 MySQL Workbench 中对数据库进行逆向工程,但它似乎没有导入或识别外键。这意味着我无法用它来绘制关系。

虽然我试图让它工作,但我正在使用几个表的 sn-p,所以它并不复杂。

这是我正在尝试使用的 2 个演示表:

    CREATE TABLE users (
    UserID varchar(32) NOT NULL,
    OrgID varchar(6) NOT NULL,  
    RegionID int NULL,
    LocationID int NULL,
    Name nvarchar(60) NULL,
    Crypt varchar(32) NULL,
    Security int NULL,
    Status int NULL,
    PRIMARY KEY ( UserID ),
    CONSTRAINT fk_OrgID_Users FOREIGN KEY (OrgID) REFERENCES Organisations(OrgID)
);


CREATE TABLE Organisations(
    OrgID varchar(6) NOT NULL,
    Name nvarchar(70) NOT NULL,
    Address1 varchar(50) NULL,
    Address2 varchar(50) NULL,
    Address3 varchar(50) NULL,
    Town varchar(20) NULL,
    County varchar(20) NULL,
    PostCode varchar(10) NULL,
    NotificationEmail varchar(500) NOT NULL,
    PRIMARY KEY ( OrgID )   
)

但在 MySQL Workbench 中,没有创建关系或外键。如果我查看表数据和外键选项卡,那里什么都没有?

我认为我正确地创建了外键,所以它没有导入它们是有原因的吗?

【问题讨论】:

  • 这两个表已经创建或者你将要创建它们。

标签: mysql database foreign-keys mysql-workbench


【解决方案1】:

在进一步的研究中,我需要做几件事才能使其发挥作用。

我必须确保从 MySQL 逆向工程的表被定义为 InnoDB。

而且我还必须从 create table 命令中删除外键约束,并在创建表后创建外键,如下所示:

CREATE TABLE Users (
    UserID varchar(32) NOT NULL,
    OrgID varchar(6) NOT NULL,  
    RegionID int NULL,
    LocationID int NULL,
    Name nvarchar(60) NULL,
    Crypt varchar(32) NULL,
    Security int NULL,
    Status int NULL,
    PRIMARY KEY ( UserID )
) ENGINE=InnoDB;

CREATE TABLE Organisations(
    OrgID varchar(6) NOT NULL,
    Name nvarchar(70) NOT NULL,
    Address1 varchar(50) NULL,
    Address2 varchar(50) NULL,
    Address3 varchar(50) NULL,
    Town varchar(20) NULL,
    County varchar(20) NULL,
    PostCode varchar(10) NULL,
    NotificationEmail varchar(500) NOT NULL,
    PRIMARY KEY ( OrgID )   
) ENGINE=InnoDB;

ALTER TABLE Users ADD CONSTRAINT fk_OrgID_Users FOREIGN KEY (OrgID) REFERENCES Organisations(OrgID);

然后工作正常,关系在 MySQL Workbench 中可见并连接

【讨论】:

    猜你喜欢
    • 2019-07-16
    • 1970-01-01
    • 2012-06-05
    • 2011-01-06
    • 2012-09-04
    • 2014-08-03
    • 1970-01-01
    • 2020-08-27
    • 2012-01-11
    相关资源
    最近更新 更多