为什么我在COMMIT之后会收到“没有正在进行的事务”的警告,即使我已经显式地用START TRANSACTION启动了一个事务(工作方式与BEGIN相同)?对于这个特定的事务,90%的时间都会发生这种情况,但是其他时间提交会成功。我在用Postgres9.3。这是postgres日志:

2014-07-04 21:47:19 EST LOG:  statement: START TRANSACTION;
2014-07-04 21:47:19 EST LOG:  statement: SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
2014-07-04 21:47:19 EST LOG:  statement: SET autocommit = 1;
2014-07-04 21:47:19 EST LOG:  statement: SET TIME ZONE 'UTC'
2014-07-04 21:47:19 EST LOG:  statement: INSERT INTO "Users" (...) VALUES (...) RETURNING *;
2014-07-04 21:47:19 EST LOG:  statement: INSERT INTO "Profiles" (...) RETURNING *;
2014-07-04 21:47:19 EST LOG:  statement: SET TIME ZONE 'UTC'
2014-07-04 21:47:19 EST LOG:  statement: INSERT INTO "Sessions" (...) VALUES (...) RETURNING *;
2014-07-04 21:47:20 EST LOG:  statement: COMMIT;
2014-07-04 21:47:20 EST WARNING:  there is no transaction in progress

最佳答案

您正在使用自动提交。使用autocommit时,显式启动事务是没有意义的。
删除“set autocommit=1”行,或者将1改为“off”或等效值,这样应该可以工作。

关于sql - PostgreSQL“没有正在进行的交易”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24573825/

10-10 15:54