【发布时间】:2018-12-25 08:40:09
【问题描述】:
我正在使用pytest-django 在我的django 网络服务器上运行一组测试。我正在尝试在 travis 上的测试/CI 中从 MySQL 数据库服务器切换到 MariaDB,为此我还从 mysqldb python 包切换到 pymysql。
在使用 MariaDB 时,我的数据库相关测试所有突然出现一个奇怪的异常:
pymysql.err.InternalError: (1665, 'Cannot execute statement: 由于 BINLOG_FORMAT = STATEMENT 并且至少一个表使用了仅限于基于行的日志记录的存储引擎,因此无法写入二进制日志。InnoDB 仅限于行日志记录当事务隔离级别为 READ COMMITTED 或 READ UNCOMMITTED 时。')
此异常位于该作业的所有测试中的几个异常堆栈中,但我已将其确定为问题的根本原因。
重要的是要注意,在直接在 travis 上运行测试套件的两个作业中,以及在 docker(在 travis 内部)上运行它的另一个作业中,只有一个失败,一个在 python 3.6 上运行。
虽然我大致了解问题的原因,但我找不到很多关于细节或任何突然触发/表现的原因的信息。除了这个Django documentation issue。
鉴于它仅针对 python3 测试作业触发,并且 Django2 放弃了对 python2 的支持,我认为这些问题是相关的,但我似乎仍然无法找到一个合理/体面的解决方案。我觉得我至少错过了这里发生的事情背后的一些原因/推理。
我没有对数据库配置进行任何更改,所有服务都使用内置安装运行。
作为参考,this 是 PR 的 travis 工作,以防我错过了一些重要的事情。
【问题讨论】:
标签: python mysql django mariadb