11
votes

Impossible de rentabiliser la transaction dans le cadre Zend

J'utilise le code suivant pour la transaction dans Zend Cadre, mais la fonction de restauration ne fonctionne pas (les données sont insérées dans la base de données par insertion ($ données)). Qu'est-ce qui ne va pas? XXX


2 commentaires

Votre DB est-il par hasard MySQL utilisant des tables MyISAM? Ils ne soutiennent pas les transactions. Vous devez utiliser des tables InnoDB si vous souhaitez un support de transaction.


Oui, j'utilise des tables Myisam. J'ai changé pour les tables innovées et ça marche. Merci.


4 Réponses :


19
votes

Nous ne pouvons pas obtenir cette question de la liste des questions "sans réponse" sur Stackoverflow à moins d'au moins une réponse avec un uppote. Donc, je répète la solution que vous avez discutée ci-dessus dans les commentaires.

@nos suggère:

est votre dB par hasard mysql en utilisant Tables myisam? Ils ne soutiennent pas transactions. Vous devriez utiliser innodb tables si vous voulez une transaction Soutien.

@Billy répond:

Oui, j'utilise des tables MyISAM. J'ai changé pour les tables innovées et ça marche. Merci.

(J'ai marqué cela comme une réponse en wiki communautaire, donc je n'en reçois pas de points.)


0 commentaires

2
votes

Si ma table était innodb (Vu de Show Create Create Create Table XXX CODE>) et ma transaction ne renvoyait pas, que suggérez-vous?

protected function tearDown()
{
    global $db;

    $db->rollBack();
}


0 commentaires

0
votes

Votre code est correct.

Vérifiez votre option de table. Vous devez utiliser un moteur transacement avec Innodb


0 commentaires

3
votes

Pour une utilisation future, pour savoir s'il s'agit vraiment d'une exception DB, utilisez Zend_DB_Exception à la place.

} catch (Zend_Db_Exception $e) {
    $db->rollBack();
    echo $e->getMessage();
} catch (Exception $e) {
    echo $e->getMessage();
}


0 commentaires