我尝试在表上添加外键,但每当我尝试时总是出现此错误
ERROR 1822 (HY000): Failed to add the foreign key constraint. Missing index for constraint 'total_ibfk_1' in the referenced table 'all_votes'
正在创建的表就是这个(members是另一个与错误无关的表,所以不要重视它)
CREATE TABLE IF NOT EXISTS all_votes (
id_vote INT AUTO_INCREMENT PRIMARY KEY,
id_member INT,
name_member VARCHAR(20),
vote VARCHAR(20) NOT NULL,
type_of_vote VARCHAR(10) NOT NULL,
topic VARCHAR(20) NOT NULL,
FOREIGN KEY (id_member) REFERENCES members(id)
);
这是发生错误的表
CREATE TABLE IF NOT EXISTS total (
topic VARCHAR(20) PRIMARY KEY,
type_of_vote VARCHAR(10) NOT NULL,
counts INT NOT NULL,
FOREIGN KEY (topic) REFERENCES all_votes(topic)
);
我读过很多答案,但似乎没有一个适合我。 This answer是最有启发性的,总结得比其他的都少。
我猜这个错误与外键对非主键的引用有关。问题是很多人都说这是可能的,但我没有找到任何代码示例,所以我可能在某个地方搞砸了。
最佳答案
因为 all_votes.topic
列应定义为 PRIMARY OR UNIQUE KEY
以便能够为 total.topic
定义引用的外键专栏。
关于mysql - 添加外键约束失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57252267/