mysql - NodeJS Sequelize 时间戳已禁用,但仍然出现未知列 'createdAt' 错误

标签 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'
  });
};

最佳答案

我看到您在依赖项中使用了sequelize-auto-migrations,并且我发现了一个打开的 issue在他们的存储库中与您的问题相关联。

您可能在设置时间戳时犯了错误,或者在禁用时间戳后在服务器中执行了迁移,因此created_at列被再次添加到您的表中。

希望这对您有帮助。

关于mysql - NodeJS Sequelize 时间戳已禁用,但仍然出现未知列 'createdAt' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56263572/

相关文章:

node.js - 使用 Sequelize 一次更新两个关联表中的列

mysql - MySQL 中的枚举或 char(1)

node.js - 按数组元素(文档)字段排序 - MongoDB/Mongoose

node.js - 这是什么意思 NODE_PATH=$NODE_PATH :./共享 Node --harmony

javascript - Sequelize,如何获取更新行的当前值?

mysql - Sequelize findOrCreate 不排除排除数组中定义的属性

MySQL 计算排名然后根据结果更新表

MYSQL delete - 表 'USER_TABLE' 被指定两次,既作为 'DELETE' 的目标,又作为单独的数据源

SQL - 每种类型只给我 3 次匹配

json - Node.js/Hapijs - 在不命名键的情况下验证 JSON 对象有效负载中的所有键和值