Sequelize 的 MySQL 创建外键时的报错解决方法

阅读时长 4 分钟读完

在使用 Sequelize ORM(对象关系映射)库时,我们经常需要在 MySQL 数据库中创建外键。然而,在创建外键时,可能会遇到一些报错,这篇文章将介绍这些报错的解决方法。

报错信息

在创建外键时,可能会遇到以下错误信息:

这个错误通常是由于外键引用的表中没有对应的行造成的。例如,如果我们想要在 Order 表中创建一个外键引用 User 表的 id 字段,那么如果 User 表中没有对应的 id 值,就会出现这个错误。

解决方法

解决这个问题的方法很简单:在创建外键时,要确保引用的表中有对应的行。如果引用的表中没有对应的行,可以先插入一条数据,然后再创建外键。

下面是一个示例代码,演示如何在 Sequelize 中创建外键:

-- -------------------- ---- -------
----- --------- - ---------------------
----- --------- - --- --------------------- ----------- ----------- -
  ----- ------------
  -------- -------
---

----- ---- - ------------------------ -
  --- -
    ----- ------------------
    ----------- -----
    -------------- ----
  --
  ----- -
    ----- -----------------
    ---------- -----
  -
---

----- ----- - ------------------------- -
  --- -
    ----- ------------------
    ----------- -----
    -------------- ----
  --
  ------- -
    ----- ------------------
    ---------- ------
    ----------- -
      ------ -----
      ---- ----
    -
  -
---

------------------------ -- -
  ------------------- ----------
---------------- -- -
  --------------------- -------
---

------------- ----- ------ -------------- -- -
  -------------- ------- ------- --------------- -- -
    ------------------ ---------- -------
  ---------------- -- -
    --------------------- -------
  ---
---------------- -- -
  --------------------- -------
---

在这个示例代码中,我们定义了 UserOrder 两个模型,并在 Order 模型中创建了一个外键,引用了 User 模型的 id 字段。首先,我们创建了一个 User 实例,并将其保存到数据库中。然后,我们创建了一个 Order 实例,并将其关联到 User 实例上。

在执行这段代码时,我们可以看到在控制台输出了 Order created:Tables created 两个消息,这表示我们成功创建了外键和表。

总结

在使用 Sequelize ORM 库时,创建外键时可能会遇到 ER_NO_REFERENCED_ROW_2 错误。这个错误通常是由于外键引用的表中没有对应的行造成的。为了解决这个问题,我们需要确保引用的表中有对应的行。如果引用的表中没有对应的行,可以先插入一条数据,然后再创建外键。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65d7f8dd1886fbafa45acd4e

纠错
反馈