【问题标题】:Cannot create foreign key out of title columns in MySQL无法从 MySQL 中的标题列创建外键
【发布时间】:2021-04-06 14:39:23
【问题描述】:

我正在尝试创建外键。

两个表中的列都是 VARCHAR(255),也不是 PK,但是我不断收到此错误消息:

我不知道如何从主题标题和帖子的 topic_title 中制作一个 fk。

提前感谢您的帮助,非常需要。

祝你有美好的一天, 安娜

【问题讨论】:

  • 请将两个表的 show create tables 的输出作为文本添加到问题中。
  • 另请注意,sequel pro 已多年未见更新,不再与现代 mysql 真正兼容。
  • 您可能会喜欢这个外键错误清单:stackoverflow.com/a/4673775/20860
  • 谢谢你的回答,你有推荐Mac osx 的吗?
  • Niiii​​ce,谢谢比尔·卡尔文

标签: mysql sql sequelpro


【解决方案1】:

只定义主键的外键。这只是一个最佳实践。

但是,为了在 MySQL 中添加外键,您需要将引用表中的列声明为主键,如unique,或使用索引。我强烈建议您不要使用任何键。至少应该是unique。但最好是主键。

【讨论】:

  • “但最好是主键”。请给一些理由好吗? (或链接...?)
  • 只定义主键的外键 这是否意味着每个表中应该只有一个外键?还是说每个外键都应该是被引用表中的主键?
  • 太好了,非常感谢!我会试试的。通常我不会在标题中添加 FK,但我在 ReactJS 的客户端使用它作为列表的键,而我的其他外键不起作用。再次感谢!
  • @B001ᛦ 。 . .不,那是指 referenced 值。并且任何表都应该只使用一个键(或一组键)来引用。当然,OP似乎。有一个特定问题,可能适合引用第二个唯一键。
  • @St3an 。 . .只需谷歌这个问题。主键定义为唯一标识表中每一行的一列或多列。外键旨在引用表中的一行。瞧。一个是为另一个而生的。还有其他原因,但这足以解释为什么主键(明确定义用于标识行)应该用于标识行。
猜你喜欢
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 2019-07-01
  • 2020-08-14
  • 2014-02-26
  • 2015-06-20
相关资源
最近更新 更多