Sequelize 错误:Unknown column 'id' in 'field list' 的解决方式

在使用 Sequelize 进行数据库操作时,有时会遇到类似于 Unknown column 'id' in 'field list' 的错误提示。这个错误通常是由于 Sequelize 操作的表缺少了某些字段引起的。

错误原因

在 Sequelize 中,每个模型都对应了一个数据库表。当我们使用 Sequelize 进行数据库操作时,Sequelize 会根据模型的定义自动生成对应的 SQL 语句。如果模型定义和数据库表结构不一致,就会出现类似于 Unknown column 'id' in 'field list' 的错误提示。

解决方式

要解决这个错误,我们需要检查 Sequelize 操作的表是否和模型定义一致。如果表缺少了某些字段,我们需要在模型定义中添加这些字段。

以一个简单的例子为例,假设我们有一个 User 模型,对应的数据库表是 users,其中包含 idnameage 三个字段。我们定义了如下的模型:

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

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

注意,在这个模型定义中,我们没有定义 id 字段。这是因为 Sequelize 会自动为每个模型添加一个名为 id 的主键字段。

现在,假设我们在代码中进行如下的查询操作:

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

当我们运行这段代码时,就会出现 Unknown column 'id' in 'field list' 的错误提示。这是因为我们的数据库表缺少了 id 字段。

要解决这个问题,我们可以手动添加 id 字段到我们的模型定义中:

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

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

在这个新的模型定义中,我们手动添加了一个名为 id 的字段,并设置了它的类型为 INTEGER,主键为 true,自动递增为 true。现在,我们再次运行代码,就可以成功查询到数据了。

总结

在使用 Sequelize 进行数据库操作时,如果出现类似于 Unknown column 'id' in 'field list' 的错误提示,通常是由于表缺少某些字段引起的。要解决这个问题,我们需要检查模型定义和数据库表结构是否一致,如果不一致,就需要手动添加缺少的字段。

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