在 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
最佳答案
尝试在外键上也使用相同类型的主键 - users.userID int
- posts.userID
。
像这样尝试:
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;
关于mysql - 为什么使用以下 sql 命令会出现 "Cannot add foreign key constraint"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30116341/