【问题标题】:Should I run all my sequelize migrations at server startup?我应该在服务器启动时运行我所有的 sequelize 迁移吗?
【发布时间】:2014-06-14 08:04:43
【问题描述】:

我对 Sequelize 中如何处理迁移有点困惑。文档中说

migrator.migrate ... will execute all the up methods within your pending migrations

pending 是否意味着 Sequelize 会跟踪手头的数据库上已经运行了哪些迁移,哪些没有在某些持久存储中运行?如果是这样,是否意味着我应该在应用启动时将所有迁移加载到迁移文件夹中并尝试运行它们?

如果没有,跟踪应在当前服务器上运行哪些迁移的最佳做法是什么?

【问题讨论】:

    标签: javascript node.js database-migration sequelize.js


    【解决方案1】:

    您说的对,待定是指尚未在手头的数据库上运行的迁移。

    如果该应用尚未部署,您无需运行迁移来更新您的数据库。您可以改为更新模型以反映您想要的更改。您始终可以在本地删除/创建数据库以显示更改,但前提是您仍处于开发阶段。

    如果您的应用已部署,数据库已经存在并且您想要更新它,那么当您运行迁移命令时,它将运行迁移文件夹中的每个新文件。如果您在应用程序上处理多个环境和协作者,我会将迁移文件保存在文件夹中。创建并运行新迁移后,之前的迁移不会再次运行,因此您无需担心它们。

    【讨论】:

      【解决方案2】:

      Sequelize 会跟踪哪些迁移已在持久存储中运行。对于该存储机制是什么,您有一些选择。

      • 将其保存在 JSON 文件中。您可以指定路径和文件名。
      • 将其保存在您的数据库中。默认情况下,它将存储在名为 SequelizeMeta 的表中,但您可以更改它。
      • 定义通过您创建的模块访问的自定义存储机制。此模块必须使用某些预定义的方法公开对象,例如

        logMigration: function (migrationName)

        unlogMigration: function (migrationName)

        系统将在您的对象上调用这些方法,并期望它在某处存储适当的数据。

      Check this out 了解更多信息。

      【讨论】:

        猜你喜欢
        • 2020-02-05
        • 2019-09-24
        • 2020-09-07
        • 2020-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-16
        相关资源
        最近更新 更多