如何捕获 Sequelize 迁移错误并防止将迁移添加到 SequelizeMeta table

How to catch Sequelize Migration Errors and prevent adding migration to the SequelizeMeta table

我最近开始尝试使用 sequelize-cli 进行 Sequelize 迁移。我注意到,如果迁移脚本抛出错误(使用 try-catch 块),sequelize-cli 仍会使用迁移更新 SequelizeMeta table,就好像迁移成功一样。

捕获错误并防止 Sequelize 在 'up' 上进入迁移到 SequelizeMeta table 中的最佳方法是什么,相反,防止在 'down' 脚本时删除迁移失败了?

使用事务来实现回滚所有由于异常而导致的迁移更改:

    up: (queryInterface) => queryInterface.sequelize.transaction(
        async (transaction) => {
            await queryInterface.createTable(table, attributes, { transaction });
            if (some_condition) {
              throw new Error('Error while migrating');
            }
        }
),

不要忘记在所有 Sequelize 方法调用中指明 transaction

请记住,并非所有 RDBMS 都支持结构更改回滚。