【问题标题】:Foreign Key error: MySQL ERROR 1005 (HY000): Can't create table外键错误:MySQL ERROR 1005 (HY000): Can't create table
【发布时间】:2018-10-04 05:13:33
【问题描述】:

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

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

【问题讨论】:

  • 如果 napolis 回答不能解决您的问题,请将表格定义作为文本添加到问题中。
  • 请提供SHOW CREATE TABLEs

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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-01-29
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 2017-05-06
    • 2021-08-31
    • 2021-04-24
    • 1970-01-01
    相关资源
    最近更新 更多