【发布时间】:2019-09-01 01:01:07
【问题描述】:
我正在尝试执行总共有三个查询的 node-mysql 事务。这三个都是“插入”查询。我故意写错了第三个查询来测试回滚,但是前两个查询的事务正在进入数据库而不会失败。
我知道类似的问题已经被问过好几次了,我几乎都试过了,但都没有成功
exports.registerNewUserTransaction = async (
res,
userToBeAdded,
nameToBeAdded,
emailToBeAdded) => {
const conn = await db.getConnection();
await conn.beginTransaction();
try {
await this.insertOne('user', userToBeAdded);
await this.insertOne('name', nameToBeAdded);
await this.insertOne('email', emailToBeAdded);
await conn.commit();
res.status(200);
} catch(err) {
await conn.rollback();
res.status(400);
} finally {
await conn.release();
}
};
如您所见,我从池中获取连接对象,开始事务并一一执行查询。我的第三个查询的列名错误,因此事务应该回滚,但我看到前两个查询的条目。我真的很感激正确的方向。 节点版本:12.8.0 mysql(在 docker 中运行):8.0.15 mysql(npm 版本):2.17.1
【问题讨论】:
标签: node.js node-mysql