| ||||
Respuesta: Transacciones se comitean cuando hay un die() intermedio Te recomiendo esta lectura http://www.forosdelweb.com/f68/duda-...llback-933041/
__________________ Verifica antes de preguntar. Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos |
| ||||
Respuesta: Transacciones se comitean cuando hay un die() intermedio Si no usas PDO, no va a tener ningún efecto el bloque try/catch. Seguramente tus transacciones se escriben en la BDD porque tienes el auto_commit en 1, o sea que en el caso de que se pierda la conexión o aunque no reciba la transacción el COMMIT respectivo, esta se escribe. Realiza la prueba poniendo auto_commit en 0. Saludos. |
| ||||
Respuesta: Transacciones se comitean cuando hay un die() intermedio Ok, mañana voy a probar con esta sentencia para evitar el autocommit: SET AUTOCOMMIT = 0 Lo de PDO todavía es algo pendiente para mi. Gracias. |
| ||||
Respuesta: Transacciones se comitean cuando hay un die() intermedio Miren, no estoy usando un die() en este ejemplo, pero lo que puedo asegurar es que la primer consulta si se ejecuta y la segunda no, porque se intenta hacer un UPDATE sobre un registro que no existe. Por que se graba la primer query?
Código PHP:
Ver original Aclaro que no se esta entrando en el boque catch, aun cuando elimino el return false de la seccion if($error). nota: las tablas son InnoDB. |
| ||||
Respuesta: Transacciones se comitean cuando hay un die() intermedio Como te digo la extensión nativa de PHP (mysql) no tiene soporte para excepciones, para eso debes de usar PDO. Respecto a tu ejemplo, hay que ver que hace $db->exec() para saber porque no te da el error y te hace el rollback. Saludos. |
| ||||
Respuesta: Transacciones se comitean cuando hay un die() intermedio Ah, gracias por comentar. Ahora entiendo mejor que mysql_query no genera excepciones que puedan ser atrapadas. Ok, ya iré entrando al mundo PDO. Por lo pronto, quitaré los try catch. |
Etiquetas: |