Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sequelize.js 如何捕获Sequelize迁移错误并防止将迁移添加到SequelizeMeta表中_Sequelize.js_Sequelize Cli - Fatal编程技术网

Sequelize.js 如何捕获Sequelize迁移错误并防止将迁移添加到SequelizeMeta表中

Sequelize.js 如何捕获Sequelize迁移错误并防止将迁移添加到SequelizeMeta表中,sequelize.js,sequelize-cli,Sequelize.js,Sequelize Cli,我最近开始尝试使用Sequelize cli进行Sequelize迁移。我注意到,如果迁移脚本抛出错误(使用try-catch块),sequelize cli仍会使用迁移更新SequelizeMeta表,就好像迁移成功一样 捕获错误并防止Sequelize在“向上”时将迁移输入SequelizeMeta表,以及相反地防止在“向下”脚本失败时删除迁移的最佳方法是什么?使用事务实现回滚由于以下异常而导致的所有迁移更改: up: (queryInterface) => queryInte

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


捕获错误并防止Sequelize在“向上”时将迁移输入SequelizeMeta表,以及相反地防止在“向下”脚本失败时删除迁移的最佳方法是什么?

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

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

不要忘记在所有Sequelize方法调用中指示
事务


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

为什么不喜欢抛出异常?正如我在问题中所解释的,Sequelize cli确实抛出了一个异常,但Sequelize cli仍然更新SequelizeMeta表,就好像迁移成功一样。