我正在用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'
});
};
答案 0 :(得分:2)
我发现您在依赖项中使用了sequelize-auto-migrations,我发现在其回购中有一个打开的issue与您的问题有关。
设置时间戳记可能会出错,或者在禁用时间戳记后在服务器中执行迁移,因此将created_at列再次添加到表中。
希望对您有帮助。