环境

开发环境

Windows 10 1809/1909
Python 3.7.6
Django 2.2.16
SQLite3(自带)

生产环境

CentOS 7 1804
Python 3.7.9
Django 2.2.16
MySQL MariaDB 5.5.65

问题

在开发环境中正常,部署到生产环境,执行数据库迁移时报错:

Specified key was too long; max key length is 767 bytes.

解决

通过修改数据库的编码规则为 utf8 及排序方式为 utf8_general_ci。
连接到数据库,并执行以下命令。执行命令后,删除数据库中所有已存在的表,再执行迁移命令。

alter database 数据库名 character set utf8 collate utf8_general_ci;
flush privileges;

其他解决方式

由于感觉其他方式不方便或太过于全局化,此处只做简要介绍。

方式一

在数据库配置文件中 /etc/my.cnf 中添加如下参数:

default-character-set=utf8
character_set_server=utf8

方式二

删除数据库后,重新创建编码规则为 utf8 及排序方式为 utf8_general_ci 的数据库。

create database 数据库名 character set utf8 collate utf8_general_ci;

方式二

升级 MySQL 版本到 5.7。

参考

stackoverflow.com/questions/29782081/django-db-utils-operationalerror-1071-specified-key-was-too-long-max-key-le
blog.csdn.net/it_dream_er/article/details/52222317/
www.cnblogs.com/abcdwxc/p/9855344.html

最后修改:2020 年 11 月 25 日 10 : 34 AM
如果觉得文章帮助了您,您可以随意赞赏。