我遇到了一个问题,在该问题中,我收到了错误消息:
MySQL ERROR 1005 (HY000): Can't create table
每当我试图创建一个外键来链接我的两个表时。我已经尝试了各种不同的方法来表达代码,但似乎没有一种方法能够修复错误,我假设当前的代码是最接近工作的:
ALTER TABLE requests
ADD FOREIGN KEY FK_UserRequest(device_id) REFERENCES users(device_id)
我阅读了其他许多关于这个主题的帖子,但似乎没有找到一个简洁的答案来解释为什么这样做行不通。我希望有人能具体回答这些问题:
外键是否需要引用主键?我看到过一些帖子对这个问题说“是”和“否”。
为什么这个特定的代码不起作用?
背景信息-
发动机确认为innodb
device\u id是两个表中具有相同属性的列:char(40)
用户表中的设备id不是主键
数据库详细信息:版本5.5.56-mariadb
1条答案
按热度按时间lfapxunr1#
是的,您需要确保引用的键是某种索引。
摘自:https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
mysql需要外键和引用键的索引[…]
innodb允许外键引用任何列或列组。但是,在引用的表中,必须有一个索引,其中引用的列按相同顺序列为第一列。