:: DEVELOPER ZONE
Si vous obtenez le message d'erreur :
Warning: Some non-transactional changed tables couldn't be rolled back
en essayant de faire un ROLLBACK, cela signifie que certaines tables
que vous avez utilisé dans la transaction ne supportent pas les transactions.
Ces tables non-transactionnelles ne seront pas affectées
par la commande ROLLBACK.
Si vous ne mélangez pas délibérément des tables transactionnelles et non-transactionnelles
dans une transaction, la source la plus probablement de cette erreur est qu'une
table que vous croyiez transactionnelle ne l'est pas. Cela peut arriver lorsque vous créez
une table en utilisant un moteur de table qui n'est pas supporté par le
serveur mysqld (ou qui a été désactivée avec une option de démarrage).
Si mysqld ne supporte pas le moteur de table, il va changer le type et
utiliser MyISAM, qui n'est pas non-transactionnelle.
Vous pouvez vérifier le type de table en utilisant une de ces commandes :
SHOW TABLE STATUS LIKE 'tbl_name'; SHOW CREATE TABLE tbl_name;
Voyez Section 14.5.3.18, « SHOW TABLE STATUS » et
Section 14.5.3.6, « Syntaxe de SHOW CREATE TABLE ».
Vous pouvez vérifier les moteurs de tables disponibles avec le serveur
mysqld, avec ces commandes :
SHOW ENGINES;
Avant MySQL 4.1.2, SHOW ENGINES est inaccessible. Utilisez la commande suivante
et vérifiez la valeur de la variable qui est associée à au moteur de tables
que vous voulez :
SHOW VARIABLES LIKE 'have_%';
Par exemple, pour déterminer si le moteur InnoDB est disponible,
vérifiez la valeur de la variable have_innodb.
Voyez Section 14.5.3.9, « Syntaxe SHOW ENGINES » et
Section 14.5.3.20, « Syntaxe de SHOW VARIABLES ».
© 1995-2005 MySQL AB. All rights reserved.
