在我的表中添加外键时遇到问题。
CREATE TABLE event (
id BIGINT(20) NOT NULL AUTO_INCREMENT,
issued DATETIME NOT NULL,
user VARCHAR(255) NOT NULL,
subject VARCHAR(255) NOT NULL,
attending BIGINT(255) NOT NULL,
attendees VARCHAR(255) NOT NULL,
organisers VARCHAR(255) NOT NULL,
place BIGINT(20) NOT NULL,
started DATETIME NOT NULL,
stopped DATETIME NOT NULL,
content LONGTEXT NOT NULL,
broadcasting TINYINT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (place)
REFERENCES place (id),
FOREIGN KEY (user)
REFERENCES user (username)
)
地方的外键正在执行正常但是一旦我尝试将用户添加为外键,我就会遇到同样的错误:
错误代码:1005。无法创建表'iservices.event'(错误号:150)
有人可以帮忙吗?
用户表的图片: User table
地方表的图片: Place table
有没有扩展MySQL Workbench中的错误?
答案 0 :(得分:0)
外键必须是unique,因此要使用户名唯一(这可能不是最好的主意)或选择与用户ID不同的内容。
我的建议:在用户表中添加一个主要的自动增量键,并将其用作外键。
答案 1 :(得分:0)
答案 2 :(得分:0)
您能否确保存在user
和place
表并将相应的列设置为primary key
?下面的剪辑工作正常:
CREATE TABLE user(username VARCHAR(255) PRIMARY KEY);
CREATE TABLE place(id BIGINT(20) PRIMARY KEY);
CREATE TABLE event (
id BIGINT(20) NOT NULL AUTO_INCREMENT,
issued DATETIME NOT NULL,
user VARCHAR(255) NOT NULL,
subject VARCHAR(255) NOT NULL,
attending BIGINT(255) NOT NULL,
attendees VARCHAR(255) NOT NULL,
organisers VARCHAR(255) NOT NULL,
place BIGINT(20) NOT NULL,
started DATETIME NOT NULL,
stopped DATETIME NOT NULL,
content LONGTEXT NOT NULL,
broadcasting TINYINT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (place)
REFERENCES place (id),
FOREIGN KEY (user)
REFERENCES user (username)
)
这是 SQL Fiddle 。
答案 3 :(得分:0)
我遇到了类似的错误。 当您尝试从主表中添加非主键作为辅助表中的外键时,会发生这种情况。
为避免这种情况,辅助表中的外键必须是主表中的主键。