2017-08-22 3 views
2

J'utilise Compose pour MySQL qui utilise MySQL 5.7 Group ReplicationDjango ne prend pas en charge la réplication MySQL groupe

Lorsque vous essayez faire des essais de DB avec Django 1.11.4 je reçois des erreurs concernant la rollback_test (parce qu'il ne tient pas à l'exigence de clé primaire)

et transaction-write-set-extraction! = OFF obligatoire pour la création de SAVEPOINTS.

django.db.utils.OperationalError: (1290, 'The MySQL server is running with the --transaction-write-set-extraction!=OFF option so it cannot execute this statement')

Tout fonctionne bien en dehors des tests.

Y at-il un moyen de dire à Django qu'il s'agit d'une base de données MySQL de réplication de groupe et d'éviter ces tests spécifiques?

Répondre

0

La transaction set-écriture d'extraction est nécessaire pour l'utilisation du groupe de réplication sur InnoDB

Les versions antérieures à MySQL 5.7.19 ne supporte pas les points de sauvegarde sur groupe de réplication. Mettez à niveau votre MySQL local et de production vers la version 5.7.19 ou une version ultérieure de la version 5.2.

Replication: Group Replication now supports SQL transaction SAVEPOINT.

Quant à Django crée saves points lors de l'imbrication du code atomique, de sorte que vous pouvez rencontrer ce problème à l'avenir en dehors de vos tests.

When the atomic() decorator is nested, it creates a savepoint to allow partial commit or rollback.

Aussi, vous devrez peut-être vérifier si votre serveur de production est properly configured pour le cluster InnoDB.

+0

Oui, c'est un problème avec Compose pour MySQL. Je viens de passer à un autre fournisseur car Django ne le supporte pas – Yarh

+0

Peut-être voudriez-vous consulter Compose maintenant. MySQL 5.7.20 est maintenant disponible –