我正在使用 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/