【问题标题】:Sequelize transactions conflictSequelize 交易冲突
【发布时间】:2015-11-02 18:47:43
【问题描述】:

我想知道一种方法来创建一个事务并且不在其他模型之间共享它,下面的代码正在抛出一个异常

Unhandled rejection SequelizeDatabaseError: SQLITE_ERROR: cannot start a transaction within a transaction
    at module.exports.Query.formatError (workspace/node_modules/sequelize/lib/dialects/sqlite/query.js:239:16)
    at Statement.<anonymous> (workspace/node_modules/sequelize/lib/dialects/sqlite/query.js:47:31)
    at Statement.replacement (workspace/node_modules/sqlite3/lib/trace.js:20:31)
    at Statement.replacement (workspace/node_modules/sqlite3/lib/trace.js:20:31)

名称为'I will exist' 的模型不能在事务中,但 sequelize 会尝试将其插入在另一个函数上创建的事务中。

return Promise.all([
    sequelize.transaction(function (transaction) {
        return new Promise(function (r) {
            setTimeout(function () {
                r();
            }, 1000);
        }).then(function () {
            User.create({ name : 'Im out of tx' });
        });
    }),
    sequelize.transaction(function (transaction) {
        return Promise.all([
            User.create({ name : 'I will exist' }),
            User.create({ name : 'I will not exist' }, { transaction : transaction })
        ]).then(function () {
            return new Promise(function (r) {
                setTimeout(function () {
                    r();
                }, 1000);
            });
        }).then(function () {
            throw new SaphyreError('ok, now rollback');
        });
    }).then(function () {
        throw new Error('an error should be thrown');
    }).catch(SaphyreError, function (err) {
        expect(err).to.have.property('message').equal('ok, now rollback');

        return User.findAll();
    })
]).spread(function (a, b) {
    expect(b).with.length(2);
});

我想知道如何创建一个事务并且从不全局共享它。

【问题讨论】:

    标签: node.js transactions sequelize.js


    【解决方案1】:

    此错误仅在内存 SQLLite 配置中发生。我不知道,但我认为当它是内存时,sequelize 无法同时处理事务。

    也许这是一个错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-05
      • 2019-02-14
      • 2015-02-27
      • 2018-11-29
      相关资源
      最近更新 更多