如何将 sequelize.sync 选项强制设置为 false?

Posted

技术标签:

【中文标题】如何将 sequelize.sync 选项强制设置为 false?【英文标题】:How to set sequelize.sync option force to false? 【发布时间】:2015-11-28 14:01:03 【问题描述】:

我正在使用 mysql 数据库部署 node.js 应用程序,并在 heroku 上使用 sequelize ORM。当我部署时,sequelize 会重新创建数据库。该应用程序无法运行,因为它需要数据库中的数据。

我相信 sequelize.sync 选项是罪魁祸首。在我的本地开发环境中,我手动设置了 force: false 。但是在heroku上,正在重新安装sequelize(package.json),我猜同步默认为force:true。

如何设置一个选项来阻止这种行为?我浏览了文档并尝试了这个:

var sequelizeOptions = 
    host: "blah.blah.us-east-1.rds.amazonaws.com",
    dialect: 'mysql',
    port: 3306,
    sync: force:false
;

这将被传递给 sequelizeManager,而后者又会处理 DB 的创建。这种方法是行不通的。非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

sequelize.sync 是一个选项对象,它仅指示在调用同步时应如何执行同步,仅供参考,force 默认为false。问题是您在代码中的某处调用sequelize.sync(),可能在您注册模型的同一位置。你需要阻止你的代码执行sync()

【讨论】:

谢谢。发现。我追踪了调用 sync() 的位置。不再有同步和重新创建问题。 我调用了 sequelize.sync(force: false),但仍然重新创建了表。这是为什么呢?

以上是关于如何将 sequelize.sync 选项强制设置为 false?的主要内容,如果未能解决你的问题,请参考以下文章

如何停止执行(默认):DROP TABLE IF EXISTS in sequelize sync

node-sequelize学习笔记二(创建删除表安全检查表表列的数据类型)

Sequelize .sync 函数挂起:来自 serial.klass 的发射器

Sequelize sync() 不会创建所有的表模型

强制恢复出厂设置?

即使没有内容,如何强制 antd 选项卡全高(使用 React 和样式化组件)