【问题标题】:mysql foreign key not violated未违反mysql外键
【发布时间】:2013-12-02 02:17:34
【问题描述】:

我正在使用mysql

当我将 外键 添加到表中时,它不会出现任何错误。

当描述表结构时,我在关键字段下看到 MUL,就像我看到设置为主键的列的 PRI。

但是当我试图通过在子表中添加父表中不存在的值来违反外键约束时,它被正确插入而没有任何错误。根据我对SQL 的了解,这违反了外键规则钥匙。

任何想法为什么会发生这种情况或我该如何解决?

【问题讨论】:

  • 请向我们展示表定义、外键以及您尝试插入的数据。
  • 在几种情况下,MySQL 会直接忽略您的外键定义而不告诉您。
  • 您在表上使用什么引擎(MyISAM、InnoDB、...)?

标签: mysql sql innodb myisam referential-integrity


【解决方案1】:

您可能使用默认的 myisam 引擎。它不支持外键...

在这种情况下,将“engine=innodb”放在他创建表的末尾。

【讨论】:

  • 放松一下 - 问题是“任何想法为什么会发生这种情况或我该如何解决?”拉霍斯回答了这个问题。事实上,他回答了他们两个。
  • @MarcelGwerder,这是正确的答案。 Mysql 在不强制执行 FK 时让很多人感到惊讶,解决方法是使用 innodb 而不是默认引擎。
  • +1 值得一提的是,InnoDB 自 2010 年发布的 MySQL 5.5 以来的默认引擎。
  • @BillKarwin:即使使用 InnoDB,您也可以定义被静默忽略的外键
猜你喜欢
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 2011-02-02
相关资源
最近更新 更多