我对MySQL非常陌生(不得不为大学学习它)。 我需要为一个任务创建数据库和Web界面。
在其中一张表上,我有两列,都是外键,并且我需要将它们同时用作主键。
这是目前的代码:
drop database if exists testJoke;
create database testJoke;
use testJoke;
CREATE TABLE Author
(
id int(11) NOT NULL ,
name varchar(255) NULL ,
cust_email varchar(255) NULL,
password char(32) null,
PRIMARY KEY (id)
);
**CREATE TABLE AuthorRole
(
authorid int(11) NOT NULL ,
roleid varchar(255) NOT NULL,
PRIMARY KEY (authorid, roleid),
FOREIGN KEY(authorid) REFERENCES Author(id),
FOREIGN KEY(roleid) REFERENCES Role(id)
);**
CREATE TABLE Category
(
id int(11) NOT NULL ,
name varchar(255) NULL,
PRIMARY KEY (id)
);
CREATE TABLE Joke
(
id int(11) NOT NULL ,
joketext text NULL ,
jokedate date NOT NULL ,
authorid int(11) NULL,
PRIMARY KEY (id),
FOREIGN KEY(authorid) REFERENCES Author(id)
);
CREATE TABLE JokeCategory
(
jokeid int(11) NOT NULL ,
categoryid int(11) NOT NULL ,
PRIMARY KEY (jokeid, categoryid),
FOREIGN KEY(jokeid) REFERENCES Joke(id),
FOREIGN KEY(categoryid) REFERENCES Category(id)**
);
CREATE TABLE Role
(
id varchar(255) NOT NULL ,
description varchar(255) NULL ,
PRIMARY KEY (id)
);
所有的表格语法都遵循提供的数据字典。
当我在mysql命令行中运行它时,会在上面加粗的部分("AuthorRole"表)出现错误,显示"无法添加外键约束"。
我已经尝试过调试,似乎问题出在:
FOREIGN KEY(roleid) REFERENCES Role(id)
如果我删除引起问题的外键,一切都将正常工作,如果我保留它并删除其他外键,它会产生错误。
如果有人能够解释一下我的错误之处,我将非常感激。
我已经尝试了谷歌搜索,但没有找到任何有用的资料(可能是因为我使用了错误的关键词)。
谢谢
祝好 Corey