Node.js sequelize cli db:migrate";挂起;向新添加的列添加检查约束

Node.js sequelize cli db:migrate";挂起;向新添加的列添加检查约束,node.js,postgresql,sequelize.js,sequelize-cli,Node.js,Postgresql,Sequelize.js,Sequelize Cli,我有以下迁移文件: 'use strict'; module.exports = { up: (queryInterface, Sequelize) => { return queryInterface.sequelize.transaction(t => { return queryInterface.addColumn('Vendors', 'status', Sequelize.STRING(30), { transaction

我有以下迁移文件:

'use strict';

module.exports = {
    up: (queryInterface, Sequelize) => {
        return queryInterface.sequelize.transaction(t => {
            return queryInterface.addColumn('Vendors', 'status', Sequelize.STRING(30), { transaction: t }).then(() => {
                console.log("Created column..."); // this prints
                return queryInterface.addConstraint('Vendors', ['status'], {
                    type: 'check',
                    name: 'Vendors_status_check',
                    where: {
                        status: ['UNAPPROVED', 'SUBMITTED_FOR_APPROVAL', 'APPROVED', 'SUSPENDED']
                    },
                }, { transaction: t });
            }).catch(err => {
                console.log("Error::", err);
            });
        });
    },

    down: (queryInterface, Sequelize) => {
        return queryInterface.sequelize.transaction(t => {
            // return queryInterface.removeColumn('Vendors', 'status', { transaction: t });
            return queryInterface.removeConstraint('Vendors', 'Vendors_status_check', { transaction: t }).then(() => {
                return queryInterface.removeColumn('Vendors', 'status', { transaction: t });
            });
        })
    }
};
当我运行
sequelize cli db:migrate
时,我得到以下输出&然后命令只是“挂起”:从不完成,从不出错:

Sequelize CLI [Node: 12.14.1, CLI: 5.5.1, ORM: 5.21.3]

Loaded configuration file "config\sequelize_config.js".
Using environment "development".
== 20200224080020-vendor-status: migrating =======
Created column...
如果我完全注释掉
queryInterface.addConstraint
,命令将完成并将状态列添加到
Vendors
表中。在PostgresQL上运行此迁移,如果这有什么不同的话

根据,我尝试添加
方言选项:{ssl:true}
来对配置进行续集,但除了一个弃用警告之外没有其他效果

更新1 FWIW,运行以下代码(即,没有事务)按预期工作:

return queryInterface.addColumn('Vendors', 'status', {type: Sequelize.STRING(30)}/* , { transaction: t } */).then(() => {
    console.log("Created column..."); // this prints
    return queryInterface.addConstraint('Vendors', ['status'], {
        type: 'check',
        name: 'Vendors_status_check',
        where: {
            status: ['UNAPPROVED', 'SUBMITTED_FOR_APPROVAL', 'APPROVED', 'SUSPENDED']
        },
    }/* , { transaction: t } */);
}).catch(err => {
    console.log("Error::", err);
});

它可能在等一把锁。检查来自不同连接的
pg\u stat\u activity()
,以验证是否正确。嗯。。。这是一个开发数据库&除了我正在运行的代码之外,没有其他针对它的活动。但是,它在没有事务的情况下也可以工作。OTOH,在发布这个问题之前,我已经尝试了几个小时的小变化…@a_horse_和_no_name我知道了什么是
pg_stat_activity()
(PostgresQL的新功能),并且我可以看出,没有活动的连接。@markvgti你知道了吗?@Prof不记得了