我们使用的是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 }
,但是这对于生产数据库是不合适的。
有人知道在需要更改时如何正确更新模式吗?
发布于 2013-07-23 11:54:09
您希望实现Sequelize迁移:
http://docs.sequelizejs.com/manual/tutorial/migrations.html
这些将使您能够在已知状态之间转换开发人员数据库、临时数据库和生产数据库。
发布于 2019-08-20 20:09:12
一种更快的方法是使用{alter: true}
选项。
参考:https://sequelize.org/master/class/lib/sequelize.js~Sequelize.html#instance-method-sync
https://stackoverflow.com/questions/17708620
复制相似问题