我有个小问题做一些外键..。
当我试图在MySQL工作台中定义外键时,我得到以下消息:
所选列“playerName”必须进行索引,并且必须具有要创建的外键的兼容类型。
在这里,我的问题开始了:我非常肯定,列(towns.playerName) 是索引的,并且肯定是相同类型的( VARCHAR(255) ).
我想将外键从players.name (primary key, not null, unique)添加到towns.playersName(not null)。
那么我能做些什么来创建外键呢?
我好像做错了什么..。
对不起,如果已经有问题要问了.
编辑:我刚刚又试了一次(和以前几次一样),现在它起作用了.真奇怪
也许是MySQL工作台中的一个bug??
发布于 2019-11-22 12:54:22
我曾多次遇到同样的问题,但最终发现了一个有趣而有用的概念,我在学习mysql时忽略了这个概念。如果列不是表1中的“键”,则不能将其作为外键添加,除非它应该有索引。因此,我将该列作为索引列。
例如:
CREATE INDEX any_name ON table1 (column1);最后,我解决了我的问题。
发布于 2015-02-23 19:00:16
我认为您试图通过外键访问的密钥需要是另一个表中的主键。
发布于 2018-12-18 10:33:33
我收到了类似的错误信息。我在两个表中检查了列的类型。在一个表中是int,而另一个表中是varchar。两者都应该是相同的类型。在这两个表中使用相同的类型时,它工作得很好。
https://stackoverflow.com/questions/28681177
复制相似问题