繁体   English   中英

Node.js中的MySQL回滚

[英]MySQL Rollback in node.js

我正在尝试通过node.js在MySQL中发出以下命令(使用https://github.com/mysqljs/mysql库)。

当发生错误但我似乎没有回滚时,我正在使用事务API进行回滚。 接下来,我尝试简化问题,并将其直接放在PHPMyAdmin SQL框中以执行以下操作。

START TRANSACTION;
UPDATE users SET balance=balance + 1 WHERE id_user='someuserid'
ROLLBACK WORK;

我原本希望用户余额保持在以前的值(124),但它会继续增加一个,并在此末尾显示更新后的余额125。

知道我在做什么错吗? 难道是MySQL Db不支持事务和/或这样的UPDATE是否可以在事务中回滚?

好,问题解决了。

供其他遇到此问题的人参考,这是因为使用了表引擎。

我的表使用的是MyISASM,它不支持事务并且无提示地失败。 它会在每个事务上自动提交,因此ROLLBACK不会做任何事情。

解决方法是将表引擎从MyISAM更改为InnoDB (通过phpmyadmin进行,但也可以通过ALTER TABLE table_name ENGINE=InnoDB; sql命令来完成。

现在,以下内容可以完美运行。

START TRANSACTION;
UPDATE users SET balance = 8 WHERE id_user='s10';
UPDATE users SET balance = 9 WHERE id_user='s12';
ROLLBACK;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM