1

我正在尝试通过 sqlyog 添加外键约束,并收到此错误,尽管我只选择一个源和一个引用列

请选择相同数量的来源和参考

有谁知道在这种情况下这意味着什么?请注意,我确实有相同数量的源列和参考列...

4

1 回答 1

2

我遇到了与 SQLYog v9.01 相同的问题。错误消息具有误导性,错误的真正原因可能完全不同。

我检查以解决此问题的事情如下:

  • 检查表引擎类型,应该都是 InnoDb
  • 检查您的目标表是否与源表不同。
  • 检查引用字段的数据类型、长度和字符集排序规则。
  • 如果您的表中已有数据,请检查其一致性。

例如,您应该从表 B 中删除与表 A 相关的所有不相关数据

 DELETE target FROM B AS target LEFT JOIN A USING(id_A) WHERE A.id_A IS NULL
  • 最后,在我的情况下,我必须 FLUSH 表才能成功创建我的约束。

从查询窗口手动创建约束可以为您提供有关错误类型的更多信息。

只是提醒:

ALTER TABLE `B` ADD CONSTRAINT `FK_B` FOREIGN KEY (`id_A`) REFERENCES `A` (`id_A`) ON DELETE CASCADE ; 

祝你好运!

于 2012-12-28T17:24:58.970 回答