无法创建MySQL外键(索引问题?)

时间:2015-02-23 18:52:20

标签: mysql

制作一些外键我有点问题...
当我尝试在MySQL Workbench中定义外键时,我收到以下消息:

  

所选列'playerName'必须编入索引,并且是要创建的外键的兼容类型。

我的问题开始了:我很确定,列(towns.playerName)已编入索引,并且它最终属于同一类型(VARCHAR(255))...
Indexes of 'towns'
我想将players.name (primary key, not null, unique)的外键添加到towns.playersName(not null) 那么我该怎样才能创建外键呢? 看来我做错了......

PS:对不起,如果已经存在问题......

编辑:我刚试了一次(就像我之前做过几次一样)现在它起作用了......真的很奇怪 也许是MySQL Workbench中的一个错误?

3 个答案:

答案 0 :(得分:0)

我相信您尝试通过外键访问的密钥需要是另一个表中的主键。

答案 1 :(得分:0)

我收到类似的错误消息。我检查了两个表中列的类型。在一个表中是int,而在另一表中是varchar。两者应为相同类型。在两个表中使用相同的类型时,效果很好。

答案 2 :(得分:0)

我多次遇到相同的问题,但最终找到了一个有趣且有用的概念,我在学习mysql时就错过了。 如果表1中的一列不是“键”,则除非该列具有索引,否则无法将其添加为外键。 因此,我将该列设置为索引列。

例如

CREATE INDEX any_name ON table1 (column1);

最终,我能够解决我的问题。