如何捕获 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 都支持结构更改回滚。
我最近开始尝试使用 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 都支持结构更改回滚。