Django:运行单元测试时出现操作错误

时间:2016-08-10 18:34:24

标签: sql django mariadb

我们有一个使用MariaDB 10的Django应用程序。当我尝试运行单元测试时,如下所示: ./manage.py test myapp

测试数据库的构建失败,并出现以下错误:

django.db.utils.OperationalError: (1709, 'Index column size too large. The maximum column size is 767 bytes.')

我已经知道VARCHAR(200)字段中的字符集(utf8)和排序规则(utf8_general_ci)是导致错误的原因。

我尝试删除受影响的应用的所有迁移文件并重新运行它们,但这并没有解决问题。 (我是python和Django的新手,当时似乎是个好主意......)

我的问题是:如何修复/跳过此错误(以及进程中可能发生的任何类似错误),以便完成构建测试数据库?

1 个答案:

答案 0 :(得分:0)

创建数据库时,请务必使用SET utf8 COLLATE utf8_bin

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

对于运行测试:在db config add

'TEST_CHARSET': 'utf8',
'TEST_COLLATION': 'utf8_general_ci',

如果这不起作用:更改配置文件

#/etc/mysql/mariadb.conf.d/50-client.cnf
default-character-set = utf8 

#/etc/mysql/mariadb.conf.d/50-mysql-clients.cnf
default-character-set = utf8

...并重新启动数据库。