2017-08-22 42 views
2

我使用撰写的MySQL,它使用MySQL 5.7 Group ReplicationDjango不支持MySQL组复制

当使用Django 1.11.4试图做DB测试中,我得到关于rollback_test(因为它没有保持要求的错误主密钥)

和事务写入集提取!=关闭创建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')

工作一切良好,除了测试。

有什么办法可以告诉Django它是一个组复制MySQL数据库,并避免这些特定的测试?

回答

0

事务写集提取需要使用组复制上的InnoDB

现有

版本到MySQL 5.7.19不支持保存在组复制点。

将本地和生产MySQL升级到5.7.19或更高版本。

Replication: Group Replication now supports SQL transaction SAVEPOINT.

至于Django的筑巢原子代码的时候,所以你可能会在将来遇到此问题你的测试之外它创建saves points。你

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

可能还需要检查,如果你的生产服务器是properly configured InnoDB的集群。

+0

是的,这是使用Compose for MySQL的问题。因为Django不支持它,所以我只是切换到另一个提供程序 – Yarh

+0

现在可能想查看Compose。 MySQL 5.7.20现在可用 –