Mysql “表中的外键约束格式不正确”;“问题”;
这是我创建的两个表,但在表Mysql “表中的外键约束格式不正确”;“问题”;,mysql,sql,database-design,foreign-keys,create-table,Mysql,Sql,Database Design,Foreign Keys,Create Table,这是我创建的两个表,但在表问题中有一个错误: 我在网上搜索过,但找不到任何解决办法。你能在这方面帮助我吗 CREATE TABLE Issues ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(100), description TEXT, type VARCHAR(50), priority VARCHAR(50), status VARCHAR(50), assigned_to I
问题中有一个错误:
我在网上搜索过,但找不到任何解决办法。你能在这方面帮助我吗
CREATE TABLE Issues
(
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(100),
description TEXT,
type VARCHAR(50),
priority VARCHAR(50),
status VARCHAR(50),
assigned_to INT,
created_by INT,
created DATETIME,
updated DATETIME,
FOREIGN KEY (assigned_to, created_by) REFERENCES Users(id, id)
) ENGINE=InnoDB;
CREATE TABLE Users
(
id INT AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30),
lastname VARCHAR(30),
password VARCHAR(30),
email VARCHAR(30),
date_joined DATETIME
) ENGINE=InnoDB;
您需要两个外键,而不是一个-并且需要在子表之前创建父表:
-- parent table
create table users (
id int auto_increment primary key,
firstname varchar(30),
lastname varchar(30),
password varchar(30),
email varchar(30),
date_joined datetime
) engine=innodb;
-- child table
create table issues (
id int auto_increment primary key,
title varchar(100),
description text,
type varchar(50),
priority varchar(50),
status varchar(50),
assigned_to int,
created_by int,
created datetime,
updated datetime,
foreign key (assigned_to) references users(id), -- first FK
foreign key (created_by) references users(id) -- second FK
) engine=innodb;
最有可能的情况是,您只需要先创建用户
,然后再发布问题
,这样就可以设置FK约束并引用现有表了……@marc_s,我也尝试过。。。但我仍然得到错误:第13行的错误1822(HY000):未能添加外键约束。引用表“Users”中缺少约束“Issues\u ibfk\u 1”的索引是否确实要创建复合外键??用户中没有匹配的复合主键
。。。。或者您想为分配给用户的创建一个FK。id
和另一个由创建的的FK约束吗?再次分别分配给用户。id
请看@GMB的答案——他一定已经读懂了我的心思,并把它写进了答案中;-)详细说明:为了在InnoDB中创建外键,需要以完全相同的顺序引用索引。您没有索引(id,id)
,您只有一个索引id
,因此需要使用两个单独的FK来引用它。看。