设置django-allauth,收到错误:索引列大小太大

时间:2016-11-21 16:18:28

标签: python mysql django mariadb django-allauth

我在安装django-allauth时尝试运行./manage.py migrate,但始终会因此错误而失败:django.db.utils.OperationalError: (1709, 'Index column size too large. The maximum column size is 767 bytes.')

我正在使用MariaDB 10.1.19,在我的/etc/mysql/my.cnf文件中,我添加了以下行以增加可用的索引大小:

[server]
innodb-large-prefix = ON

但是,错误仍然存​​在。

我读过的有关django-allauth的后续文档表明此错误已得到解决,但我仍在体验它。

如何确保实际读取和使用配置中的配置指令?

如何修复此索引大小调整错误?

谢谢!

[更新]: 我在conf文件中添加了以下内容:

[server]
innodb_file_format = BARRACUDA
innodb-large-prefix = ON

[table]
ROW_FORMAT = DYNAMIC

仍然收到错误,但是......

[更新2] 配置文件现在看起来像这样:

[mysqld]
innodb_strict_mode = ON
innodb_file_format = BARRACUDA
innodb-large-prefix = ON
innodb_file_per_table = 1
innodb_buffer_pool_size = 702545920
innodb_file_format_max = BARRACUDA
innodb_log_file_size = 50331648

这些所有工作,即在我搜索服务器变量时列出。

我试图添加:

[client]
innodb_default_row_format = dynamic

然而,这不起作用。如果我在[mysqld]

下添加它,它也不会起作用

1 个答案:

答案 0 :(得分:0)

说明(5.7.7及更高版本不需要)

获取MySQL 5.6.3 / 5.5.14(或更高版本)和......

Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("E:P")) Is Nothing Then
        If Target.Cells.Count = 1 then
            Cancel = True
            Sheets("Sheet1").Range("S13") = Target.Value
        End If
    End If
End Sub

然后也许你可以索引(255)utf8mb4而不必缩小到191因为767限制。

服务器部分在MySQL中被称为SET GLOBAL innodb_file_format=Barracuda; SET GLOBAL innodb_file_per_table=1; SET GLOBAL innodb_large_prefix=1; logout & login (to get the global values); ALTER TABLE tbl ROW_FORMAT=DYNAMIC; ;在MariaDB中它有什么不同吗?