NodeJS sequelize时间戳已禁用,但仍然出现Unknown column'createdAt'错误

时间:2019-05-22 19:18:29

标签: mysql node.js sequelize.js

我正在用MySQL构建一个新的NodeJS应用程序。我需要使用应用程序原始版本中的现有数据库。我正在使用旧数据库中的mysql转储文件来创建新数据库。

我使用sequelize-auto模块基于现有数据库自动生成了模型。

在数据库中不存在createdAt字段,并且在所有模型中都特别禁用了时间戳。但是,在运行诸如models.people.findAll()models.people.findOne()之类的查询时,我仍然看到此错误:

"SequelizeDatabaseError: Unknown column 'createdAt' in 'field list'"

我按照另一篇文章中的说明全局禁用了时间戳记,但是它不能解决问题。

Sequelize Unknown column '*.createdAt' in 'field list'

以下是相关版本:

"mysql": "^2.17.1",
"mysql2": "^1.6.5",
"sequelize": "^5.8.5",
"sequelize-auto": "^0.4.29",
"sequelize-auto-migrations": "^1.0.3"

这是人员模型。时间戳已在此模型以及全局所有其他模型中明确禁用。另外,我已经读到timestamps : false是最新版本的sequelize中的默认设置,因此我对这到底是个问题感到困惑。

module.exports = function(sequelize, DataTypes) {
  return sequelize.define('people', {
    PersonID: {
      type: DataTypes.INTEGER(10).UNSIGNED,
      allowNull: false,
      primaryKey: true
    },
    FirstName: {
      type: DataTypes.STRING(50),
      allowNull: false
    },
    LastName: {
      type: DataTypes.STRING(50),
      allowNull: false
    },
    Username: {
      type: DataTypes.STRING(50),
      allowNull: true
    },
    EmailAddress: {
      type: DataTypes.STRING(255),
      allowNull: true
    }
  }, {
    tableName: 'people',
    timestamps: 'false'
  });
};

1 个答案:

答案 0 :(得分:2)

我发现您在依赖项中使用了sequelize-auto-migrations,我发现在其回购中有一个打开的issue与您的问题有关。

设置时间戳记可能会出错,或者在禁用时间戳记后在服务器中执行迁移,因此将created_at列再次添加到表中。

希望对您有帮助。