环境
开发环境
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