transactions from PHP - double COMMIT required?
От | mikie |
---|---|
Тема | transactions from PHP - double COMMIT required? |
Дата | |
Msg-id | ca35ce500703010306nd06dcfcy1247fb2b4297b0c2@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: transactions from PHP - double COMMIT required?
|
Список | pgsql-php |
Hi, I have this problem - after sending a query from PHP script with BEGIN-COMMIT transaction block that contains an error (e.g. I intentionally insert wrong data into the field of "date" type) I get an error (which is OK):ERROR: date/time field value out of range. Now, when I try to DELETE or perform some other query later in the same PHP script I receive this error: ERROR: current transaction is aborted, commands ignored until end of transaction block I am 100% sure that I have closed the transaction block with "COMMIT;". When I do the same in the console (psql) I get something like: BEGIN; INSERT INTO table1 (somecolumn) VALUES ('somedata'); INSERTsdf; COMMIT; I get this reply BEGIN INSERT 180610 1 ERROR: syntax error at or near "INSERTsdf" at character 1 ROLLBACK Everything seems to be logical and works fine. So why this does not work from PHP? I figured one thing to workaround my problem: I am sending the query like this: BEGIN; (here are few insert queries, one is syntax error); COMMIT; Then I check the pg_result of this query in PHP, and if it is FALSE I have to send another simple query : "COMMIT;" - yes I know this is second commit already. But it works this way! It seems like if PHP ignored my COMMIT command from the transaction query. I also tried sending the transaction query like this: BEGIN; some queries; COMMIT;COMMIT; but this is not working. I need to send one transaction query, check if the result is false, then send another COMMIT. Any ideas where I got something missed? Regards, Mike
В списке pgsql-php по дате отправления: