2017-08-22 47 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現在可用 –