2011/6/21 Lincoln Yeoh <lyeoh@pop.jaring.my>:
> At 04:13 AM 6/20/2011, Alexander Farber wrote:
>>
>> why add a begin/commit if I only
>> have SELECT statements
>> there (in the default mode) and
>> the data isn't critical to me
>> (just some player statistics and
>> notes by other players - i.e.
>> a statistic or note is ok to be lost
>> occasionally)?
>
> If you're not intending to write anything to the database you could try do a
> rollback instead of commit.
>
> I'm not familiar with your system, but if you are getting
>
>> SQLSTATE[25P02]: In failed sql transaction:
>> 7 ERROR: current transaction is aborted,
>> commands ignored until end of transaction block
I understood that the OP put a begin/commit around *each* request (so
one around prepare, and one around exec)
Php documentation contains useful information with examples.
Alexander, I suggest you to just add a begin before the 'prepare' and
a commit after the 'exec', not between each.
>
> Maybe you can do a rollback, begin, followed by your sql statements then
> rollback again.
>
> You would get warnings for a rollback followed by rollback, but they might
> not be fatal (not sure about your config).
>
> There might be a problem with one of the SQL queries and that's why it
> cannot be committed.
>
> Alternatively the program logic might be bypassing a COMMIT. A BEGIN
> followed by a BEGIN would cause an "already in transaction" error which
> would cause the "transaction is aborted" problem.
this is not correct
cedric=# begin ;
BEGIN
cedric=# begin ;
ATTENTION: une transaction est déjà en cours
BEGIN
cedric=# select 1;
?column?
----------
1
(1 ligne)
cedric=# commit;
COMMIT
--
Cédric Villemain 2ndQuadrant
http://2ndQuadrant.fr/ PostgreSQL : Expertise, Formation et Support