mysql - 添加外键约束失败

标签 mysql foreign-keys

我尝试在表上添加外键,但每当我尝试时总是出现此错误

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/

相关文章:

mysql - 查询基于年份创建的用户数的计数

mysql - 通过cmd将大型数据库导入mysqlAdmin时出错

mysql - SQL 语句 : how can I pick a value only once from a table to update another table?

group-by - SQL按外键分组查询怎么样?

sql - 在 MySQL 中创建外键产生错误 :

javascript - JS定时器和mysql不同步

mysql - 分组依据之前排序

sql - 在 ms-access 中获取表的外键约束列表?

javascript - 链接和获取自定义输出 mysql

mysql - 收到 1215 错误“无法添加外键约束”