【发布时间】:2013-07-16 12:39:30
【问题描述】:
我们使用 orm sequelize.js 并定义了这样的模型:
module.exports = function(sequelize, DataTypes) {
var Source = sequelize.define('Source', {
name: {
type: DataTypes.STRING,
allowNull: false,
unique: true
}
}, {
paranoid: true
});
return Source;
};
这已部署到生产环境并使用 sequelize.sync 同步到数据库。下一步,我们添加一个参数:
module.exports = function(sequelize, DataTypes) {
var Source = sequelize.define('Source', {
name: {
type: DataTypes.STRING,
allowNull: false,
unique: true
},
location: {
type: DataTypes.STRING
}
}, {
paranoid: true
});
return Source;
};
但是,在部署到生产时sequelize.sync 不会添加这个新参数。这是因为sync 做了一个:
CREATE TABLE IF NOT EXISTS
如果表存在,则实际上不会更新架构。这是noted in their documentation。
唯一的选择似乎是{ force: true },但这对于生产数据库来说是不行的。
有谁知道在需要更改时如何正确更新架构?
【问题讨论】:
标签: javascript postgresql orm database-schema sequelize.js