Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: llamamecomoquieras en 28 Enero 2009, 01:16 am



Título: Commit "seguro" en MySQL
Publicado por: llamamecomoquieras en 28 Enero 2009, 01:16 am
Holita comunidad.

Tengo un problema con un editado de un valor en una base de datos cutre. La cuestion es la siguiente:

Se ejecuta un script en PHP el cual recibe un parámetro, el cual es, por ejemplo, un nombre de usuario, y se hace servir para saber cuantos puntos tiene. Una vez sabemos cuantos puntos tiene, le añadimos unos cuantos mas, y con un UPDATE dejamos patente a la DB que hemos querido cambiarlo. Para asegurarse, vuelve a leer los puntos para ver si realmente se ha efectuado el cambio.
Total, que en todos los casos se confirma la edición de ese valor, pero en algunos, ya dentro del juego, suele pasar que los cambios no se han efectuado.

Ya pensando a lo bruto con SQL he pensado si habría alguna manera de machacar bien el dato con un buen commit, vaya a ser que el juego en sí lo esté usando a la vez. Algun mutex u otra historia con transacciones?

Un saludo, y gracias por adelantado, como siempre :)


Título: Re: Commit "seguro" en MySQL
Publicado por: coquito_navideño en 14 Febrero 2009, 16:06 pm
Evalua bien que tipo de QUERY estas utilizando para ejercer esto, si la tabla en cuestion de la que hablas esta en MyIsam todos los cambios seran automaticamente aplicados.. o mejor aun digamos que todo lo que hagas en una consulta sobre tablas Myisam sera un commit automatico aplicado sin poder echar hacia atras.

MySQL por defecto trae el autocommit activado (ya que asume que sus tablas seran Myisam) verifica si a lo mejor en tu caso que lo dudo pero mira ver, esta el autocommit desactivado :

mysql> show variables like 'autocommit%';

igual para activar autocommit puedes hacer :

set autocommit = 1;

Para desactivar

set autocommit = 0;

y asi desactivado poder utilizar el Rollback por si acaso.