确保您已经执行了该命令
start transaction;
查询前删除。
(http://dev.mysql.com/doc/refman/5.0/en/lock-tables-and-transactions.html)
我最终锁定了交易之外(在交易之前),因为这是我在交易中要做的第一件事情。或者,您可以按照文档建议的方式操作:SET autocommit=0;
LOCK TABLES t1 WRITE, t2 READ, ...;
... do something with tables t1 and t2 here ...
COMMIT;
UNLOCK TABLES;
我有同样的问题,但是我已经检查了InnoDB支持。
首先,请尝试通过以下方式验证INNODB引擎是否可用:
mysql> show engines;
#default-storage-engine=INNODB -> default-storage-engine=INNODB
并且在行skip-innodb后面添加“#”
skip-innodb -> #skip-innodb
SET autocommit = 0;
START TRANSACTION;
INSERT INTO ..
UPDATE <table> ..
COMMIT;
SET autocommit = 1;
autocommit
后执行的任何操作都需要您显式提交。即使对我来说,回滚在InnoDB引擎中也无法正常工作。
但是在start transaction;
之后添加begin;
语句可以解决问题。
SET autocommit = 0;
start transaction;
begin;
-- DML query goes here
rollback;
SET autocommit = 1;
但是
这对我没用SET autocommit = 0;
start transaction;
-- DML query goes here
rollback;
SET autocommit = 1;
真的我不知道原因,如果有人知道,请在这里留言。