制作一些外键我有点问题...
当我尝试在MySQL Workbench中定义外键时,我收到以下消息:
所选列'playerName'必须编入索引,并且是要创建的外键的兼容类型。
我的问题开始了:我很确定,列(towns.playerName)是已编入索引,并且它最终属于同一类型(VARCHAR(255))...
Indexes of 'towns'
我想将players.name (primary key, not null, unique)
的外键添加到towns.playersName(not null)
那么我该怎样才能创建外键呢?
看来我做错了......
PS:对不起,如果已经存在问题......
编辑:我刚试了一次(就像我之前做过几次一样)现在它起作用了......真的很奇怪 也许是MySQL Workbench中的一个错误?答案 0 :(得分:0)
我相信您尝试通过外键访问的密钥需要是另一个表中的主键。
答案 1 :(得分:0)
我收到类似的错误消息。我检查了两个表中列的类型。在一个表中是int
,而在另一表中是varchar
。两者应为相同类型。在两个表中使用相同的类型时,效果很好。
答案 2 :(得分:0)
我多次遇到相同的问题,但最终找到了一个有趣且有用的概念,我在学习mysql时就错过了。 如果表1中的一列不是“键”,则除非该列具有索引,否则无法将其添加为外键。 因此,我将该列设置为索引列。
例如
CREATE INDEX any_name ON table1 (column1);
最终,我能够解决我的问题。