我对MySQL相当陌生(必须为uni学习)。我必须为任务创建数据库和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)
引起问题的外键(如果我将其删除,则一切工作正常,并且如果我将其保留并删除另一个外键,则会出现错误)。
如果有人可以解释我哪里出了问题,我将不胜感激。
我曾尝试使用Google搜索,但无法找到任何内容(可能是因为我使用了错误的关键字)。
谢谢
首先创建表“ Role”,然后创建表“ AuthorRole”,这样就可以了
CREATE TABLE Role ( id varchar(255) NOT NULL , description varchar(255) 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) );
当创建主键时,最好使用 id INT(11) NOT NULL AUTO_INCREMENT
id INT(11) NOT NULL AUTO_INCREMENT