DatabaseError:(1071,'指定密钥太长;最大密钥长度为767字节')

时间:2013-12-04 22:54:55

标签: python mysql django

我有一个django项目,我想进行一些单元测试。当我尝试: python manage.py test它会抛出此错误,我在这里找不到有关它的更多信息。

settings.py中的数据库设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydb',
        'USER': 'root',
        'PASSWORD': 'password',
        'HOST': 'localhost',           
        'PORT': '3306', 
    }
} 

它似乎与InnoDBMyISAM相关,但我不知道有什么问题以及如何解决它。谢谢!

django版本:1.5.4
mysql版本:5.5

此外,任何django模型中都没有设置unique=True

4 个答案:

答案 0 :(得分:9)

解决方案

ALTER DATABASE `databasename` CHARACTER SET utf8; 

已经暴露在这里

https://stackoverflow.com/a/43365860/7708836

答案 1 :(得分:1)

我找到了自己的解决方案。

如果你在my.cnf中有某种方式:

 character-set-server = utf8mb4
 collation-server = utf8mb4_unicode_ci

然后它会产生这个“太多字节”的问题。把它还原回旧的utf8,它有所帮助。

答案 2 :(得分:0)

使用以下命令创建数据库 创建数据库字符集utf8;

答案 3 :(得分:0)

我已经解决了创建如下所示的新数据库的主题问题:

DROP DATABASE IF EXISTS databasename;

CREATE DATABASE databasename DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;