Node.js ExpressJS+;Sequelize er_bad_field_错误:fieldlist中的未知列
将以下模型文件与Sequelize结合使用,此代码运行时不会出错,并允许我执行插入:Node.js ExpressJS+;Sequelize er_bad_field_错误:fieldlist中的未知列,node.js,express,database-schema,sequelize.js,Node.js,Express,Database Schema,Sequelize.js,将以下模型文件与Sequelize结合使用,此代码运行时不会出错,并允许我执行插入: var crypto = require('crypto'); module.exports = function(sequelize, DataTypes) { var User = sequelize.define('User', { title: DataTypes.STRING, name: DataTypes.STRING, email:
var crypto = require('crypto');
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define('User',
{
title: DataTypes.STRING,
name: DataTypes.STRING,
email: DataTypes.STRING,
username: DataTypes.STRING,
hashedPassword: DataTypes.STRING,
provider: DataTypes.STRING,
salt: DataTypes.STRING,
facebookUserId: DataTypes.INTEGER,
twitterUserId: DataTypes.INTEGER,
twitterKey: DataTypes.STRING,
twitterSecret: DataTypes.STRING,
github: DataTypes.STRING,
openID: DataTypes.STRING
},
...
)
但是,当我尝试手动添加自己感兴趣的字段时,即添加邮政编码字段,如下所示:
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define('User',
{
title: DataTypes.STRING,
name: DataTypes.STRING,
email: DataTypes.STRING,
username: DataTypes.STRING,
hashedPassword: DataTypes.STRING,
provider: DataTypes.STRING,
salt: DataTypes.STRING,
facebookUserId: DataTypes.INTEGER,
twitterUserId: DataTypes.INTEGER,
twitterKey: DataTypes.STRING,
twitterSecret: DataTypes.STRING,
github: DataTypes.STRING,
openID: DataTypes.STRING,
ZIP: DataTypes.INT
},
以下错误会传播:
SequelizeDatabaseError: ER_BAD_FIELD_ERROR: Unknown column 'title' in 'field list'
为什么不允许我在模型中添加字段,以便能够从控制器访问这些字段?可能因为旧表中存在一行而导致sequelize/SQL混淆。如果已经创建了一些表,您是否尝试过删除数据库中的任何现有表?如前所述,同步数据库很重要,但也要将“force”设置为true,以便擦除旧表(仅当数据库不在生产环境中时才执行此操作!)。在文档中: 这对我有用
sequelize
.sync({ force: true })
.then(function(err) {
console.log('It worked!');
}, function (err) {
console.log('An error occurred while creating the table:', err);
});
添加
sync({force:true})
将重新创建该表,同时删除生产数据库中的所有条目。您可以尝试使用相同的选项,但使用alter选项sync({alter:true})
。它将尝试更新新值或删除旧值,不会造成太大伤害。在投入生产之前,我会先在开发模式下进行尝试。是否将模型与数据库同步,确保你正在这样做,关于你的ZIP字段没有数据类型INT,有整数,插入后模型与数据库同步,对吗?此外,我将ZIP类型更改为INTEGER,并传播了完全相同的错误。您必须同步模型架构,这将更改数据库中的表,因此,如果您可以检查表中是否有ZIP列,则一切正常。