【发布时间】:2015-12-25 07:47:50
【问题描述】:
我在数据库中有一个表,现在我想向其中添加两个新列。
我使用MYSQL cmd line 更改了表格,并将新添加的列添加到Sequelize 模型中。
但是当我触发插入查询时,它仍然会触发带有先前字段的查询,并且不会将新添加的列添加到其中。
这是我的数据模型:
var Observation = sequelize.define('observation_details', {
obv_id: {
type: Sequelize.INTEGER,
primaryKey: true
},
obv_source: Sequelize.STRING,
obv_waveband: Sequelize.INTEGER,
prpsl_id: Sequelize.INTEGER,
obv_ra: Sequelize.DOUBLE, //newly added column
obv_dec: Sequelize.DOUBLE // newly added column
}, {
tableName: 'observation_details',
timestamps: false
});
表中obv_ra 和obv_dec 已添加..!
这是插入查询:
Observation.create({
obv_source: req.body.obvDetails[i].source,
obv_waveband: req.body.obvDetails[i].waveband,
prpsl_id: proposalId,
obv_ra: req.body.obvDetails[i].ra,
obv_dec: req.body.obvDetails[i].dec
})
添加 Sequelize.sync({force:false}) 会导致:
执行(默认):CREATE TABLE IF NOT EXISTS observation_details (obv_id INTEGER , obv_source VARCHAR(255), obv_waveband INTEGER, prpsl_id INTEGER, obv_ra DOUBLE PRECISION, obv_dec DOUBLE PRECISION, PRIMARY KEY (obv_id)) ENGINE=InnoDB;
但触发的查询仍然是:
执行(默认):INSERT INTO observation_details (obv_id,obv_source,obv_waveband,prpsl_id) VALUES (NULL,dgf,2,19);
有什么方法可以在不使用Migrations 的情况下解决这个问题?
【问题讨论】:
-
使用sync - 可能会有所帮助。也许 Model 和 db 之间有区别——你会用
sync看到它。使用前请小心并备份数据库,因为force会删除表。 -
如果我设置
force:false怎么办,无论如何这可以在不丢表的情况下完成 -
@AndreyPopov 请看我的编辑
标签: mysql node.js database-migration sequelize.js