Transactions MySql et gestion des erreurs

WRInaute discret
Bonjour,

je travaille à la création d'un site marchand et je suis face au pb classique des "transactions". Il s'agit par exemple de m'assurer que si je vends un produit, il est bien supprimé du stock du marchand et crédité sur le compte de l'acheteur.
Dans la mesure où il s'agit de 2 requêtes:
- je supprime le produit du stock du marchand
- je crédite le compte de l'acheteur

que faire si la seconde requête échoue ?
- remettre le produit au stock du marchand... mais que faire alors si cette requête aussi échoue
- avoir un système de logs pour détecter une incohérence dans mon modèle... mais ne pas baser ce système sur MySql. Par email ? Ecriture dans un fichier ?

Mais au fond, qu'est-ce qui peut provoquer l'échec d'une requête si une précédente s'est exécutée sans soucis qq ms plus tôt ?

Au fond, pas mal de questions ;-) Comment faites-vous de votre côté ?
Merci
 
WRInaute accro
Xophe a dit:
Comment faites-vous de votre côté ?

Ben on utilise des "transactions" justement.

http://dev.mysql.com/doc/refman/5.1/en/commit.html

La BDD doit garantir que soit toutes les opérations de la transaction (entre le begin et le commit) ont été exécutées, soit qu'aucune ne l'a été (et tu sais lequel des deux cas s'est produit), et que même en cas de plantage du serveur après le commit, tout ce qui a été exécuté sera toujours là au redémarrage.

Bon ça c'est la théorie (propriétés ACID tout ça), de mémoire mysql n'est pas très doué de ce point de vue avec les tables myisam, il vaut mieux s'orienter vers du innodb (mais je laisse la parole à ceux qui connaissent mysql mieux que moi).

Jacques.
 
WRInaute discret
Merci pour ta réponse Jacques.

Il est visiblement possible de créer des tables innoDB sur OVH, je vais donc m'orienter vers cette solution.

Mais peut-être qu'un autre utilisateur du forum a d'autres pistes ?
 
Discussions similaires
Haut