【问题标题】:Django doesn't support MySQL Group ReplicationDjango 不支持 MySQL 组复制
【发布时间】:2017-08-22 14:24:07
【问题描述】:

我正在使用 Compose for MySQL,它使用 MySQL 5.7 Group Replication

在尝试使用 Django 1.11.4 进行数据库测试时,我收到有关 rollback_test 的错误(因为它不满足主键的要求)

transaction-write-set-extraction!=OFF 要求创建 SAVEPOINTS。

django.db.utils.OperationalError: (1290, 'MySQL 服务器正在使用 --transaction-write-set-extraction!=OFF 选项运行,因此无法执行此语句')

除了测试之外,一切都很好。

有没有办法告诉 Django 它是一个 Group-Replication MySQL DB 并避免这些特定的测试?

【问题讨论】:

    标签: mysql django compose-db


    【解决方案1】:

    在 InnoDB 上使用 Group Replication 需要 transaction-write-set-extraction

    MySQL 5.7.19 之前的版本不支持组复制上的保存点。

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

    复制:组复制现在支持 SQL 事务 SAVEPOINT。

    对于 Django,它在嵌套原子代码时会创建 saves points,因此您将来可能会在测试之外遇到此问题。

    当 atomic() 装饰器嵌套时,它会创建一个保存点以允许部分提交或回滚。

    此外,您可能需要检查您的生产服务器是否为 InnoDB 集群的 properly configured

    【讨论】:

    • 是的,这是 Compose for MySQL 的问题。由于 Django 不支持它,我刚刚切换到另一个提供程序
    • 现在可能想要查看 Compose。 MySQL 5.7.20 现已推出
    猜你喜欢
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    相关资源
    最近更新 更多