我正在尝试向列中添加外键,但出现以下错误:
(errno: 150 "Foreign key constraint is incorrectly formed")
=> 我检查的是,列是否有一些不同的类型但它们是相同的。
=> 因此,来自 tbl_user 的权限是外键,应该引用来自 tbl_userrights 的 rights_id
=> 我使用的代码:
ALTER TABLE tbl_user ADD CONSTRAINT FK_RIGHTS_ID FOREIGN KEY (rights) REFERENCES rights_id(id);
tbl_user:
# Name Typ Kollation Attribute Null Standard Extra
1 id int(11) No AUTO_INCREMENT
2 rights int(11) No
tbl_userrights:
# Name Typ Kollation Attribute Null Standard Extra
1 rights_id int(11) No AUTO_INCREMENT
2 rights varchar(50) No
最佳答案
您的FOREIGN KEY
定义不完全正确。模式是:
FOREIGN KEY (referencing_columns) REFERENCES referenced_table (referenced_columns)
所以在你有REFERENCES rights_id(id)
的地方,你实际上应该使用
ALTER TABLE tbl_user
ADD CONSTRAINT FK_RIGHTS_ID
FOREIGN KEY (rights) REFERENCES tbl_userrights (rights_id)
参见 the FOREIGN KEY
documentation syntax reference有关语法选项的完整详细信息。
您检查数据类型是否匹配是正确的,这是一个常见错误(在引用表存在或在引用列上有索引之前尝试创建 FK 也很常见),但这次只是归结为句法。
关于MySQL - 添加外键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34694413/