我们有一个使用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的新手,当时似乎是个好主意......)
我的问题是:如何修复/跳过此错误(以及进程中可能发生的任何类似错误),以便完成构建测试数据库?
答案 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
...并重新启动数据库。