外键错误:MySQL ERROR 1005(HY000):无法创建表

时间:2018-04-24 04:06:11

标签: mysql database foreign-keys mariadb mysql-error-1005

我遇到一个问题,我收到错误消息:

MySQL ERROR 1005 (HY000): Can't create table

每当我尝试创建一个外键来链接我的两个表时。我尝试了各种不同的方法来表示代码但似乎没有解决错误,我假设的当前代码最接近工作:

ALTER TABLE requests
    ADD FOREIGN KEY FK_UserRequest(device_id) REFERENCES users(device_id)

我读了很多关于这个主题的帖子,但似乎没有找到一个简明的答案,为什么这不起作用。我希望有人可以专门回答这些问题:

  • 外键是否需要引用主键?我已经看到过对这个问题说“是”和“否”的帖子。
  • 为什么这个特定代码不起作用?

背景信息 -

  • 引擎被确认为innoDB
  • device_id是两个表中具有相同属性的列:CHAR(40)
  • users表中的device_id不是主键
  • 数据库细节:版本5.5.56-MariaDB

1 个答案:

答案 0 :(得分:1)

是的,您需要确保您引用的密钥是某种索引。

取自:https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

  

MySQL需要外键索引和引用键[...]

     

InnoDB允许外键引用任何列或组   列。但是,在引用的表中,必须有一个索引   其中引用的列被列为的第一列   同样的顺序。