我正在使用mysql数据库部署node.js应用程序并在heroku上使用sequelize ORM。部署时,sequelize重新创建数据库。该应用程序不起作用,因为它需要数据库中的数据。
我相信sequelize.sync选项是罪魁祸首。在我的本地开发环境中,我已经设置了force:false。但是在heroku上,sequelize正在重新安装(package.json),我猜同步默认为强制:true。
如何设置停止此行为的选项?我通过了文档并尝试了这个:
var sequelizeOptions = {
host: "blah.blah.us-east-1.rds.amazonaws.com",
dialect: 'mysql',
port: 3306,
sync: {force:false}
};
这被传递给sequelizeManager,而sequelizeManager又处理DB的创建。这种方法不起作用。非常感谢任何帮助。
答案 0 :(得分:3)
sequelize.sync
是一个选项对象,它简单地说明了在调用同步时应该如何执行,而且FYI,force
默认为false
。问题是您在代码中的某个地方调用了sequelize.sync()
,可能就在您注册模型的地方。您需要阻止代码执行sync()
。