在MySQL服务器上运行以下命令时出错。
CREATE TABLE users (
userID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(userID),
firstname VARCHAR(100) NOT NULL,
lastname VARCHAR(100) NOT NULL,
username VARCHAR(120) NOT NULL UNIQUE,
hashpass VARCHAR(100) NOT NULL
) ENGINE=INNODB ;
CREATE TABLE posts (
postID INT AUTO_INCREMENT,
text VARCHAR(1000),
imageURI VARCHAR(100),
userID VARCHAR(120) NOT NULL,
PRIMARY KEY(postID),
FOREIGN KEY (userID)
REFERENCES users (userID)
ON DELETE CASCADE,
tags VARCHAR(500)
) ENGINE=INNODB;
我收到以下错误:
Cannot add foreign key constraint
答案 0 :(得分:1)
尝试在外键上使用相同类型的主键 - users.userID int
- posts.userID
。
<强> WORKING SQL FIDDLE 强>
试试这样:
CREATE TABLE users (
userID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(userID),
firstname VARCHAR(100) NOT NULL,
lastname VARCHAR(100) NOT NULL,
username VARCHAR(120) NOT NULL UNIQUE,
hashpass VARCHAR(100) NOT NULL
) ENGINE=INNODB ;
CREATE TABLE posts (
postID INT AUTO_INCREMENT,
text VARCHAR(1000),
imageURI VARCHAR(100),
userID INT NOT NULL, <---Change here
PRIMARY KEY(postID),
FOREIGN KEY (userID)
REFERENCES users (userID)
ON DELETE CASCADE,
tags VARCHAR(500)
) ENGINE=INNODB;
答案 1 :(得分:0)
你的外键
userID VARCHAR(120) NOT NULL,
与
不同userID INT NOT NULL AUTO_INCREMENT,