Si vous êtes sur un MySQL récent 5.1, cela devrait fonctionner:
SHOW ENGINE ETAT INNODB comprend une liste de transactions actives pour le moteur InnoDB. Chacun d'eux est préfixé avec un identifiant de transaction et un identifiant de processus, et ressemble un peu à ceci:
---TRANSACTION 0 290328284, ACTIVE 0 sec, process no 3195, OS thread id
34831 rollback of SQL statement
MySQL thread id 18272
<query may be here>
L'identifiant de fil MySQL correspondra au CONNECTION_ID() de votre session, que vous pouvez obtenir de SHOW FULL PROCESSLIST ou information_schema .processlist, de sorte que vous pouvez déterminer quelle transaction est la vôtre. Vous devrez analyser le texte et analyser la requête si elle est présente. Si cela ne vous suffit pas, vous pouvez essayer quelque chose comme SET @PROGRESS = @PROGRESS + 1 avant chaque instruction ROLLBACK, puis SELECT @PROGRESS de DUAL à la fin de votre requête pour savoir jusqu'où la transaction est passée avant frapper une restauration.
Je pense que le moyen naturel est de les enregistrer au préalable. Si vous ne savez pas ce que fait la transaction, comment pouvez-vous savoir que vous voulez la restaurer? –