在服务器上django的syncdb期间出错

时间:2010-12-28 16:20:48

标签: mysql django mysql-error-1071

我有一个完整的操作区域设置django应用程序,但我在迁移到site5服务器时遇到了麻烦。

当我启动django的syncdb命令时,我的所有模型表都被创建,但是(我猜它在创建关系表时),我收到以下错误:

_mysql_exceptions.OperationalError: (1071, 'Specified key was too long; max key length is 1000 bytes')

当我要求django同步locale db时,我没有任何问题,此错误只发生在服务器...

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

http://dev.mysql.com/doc/refman/5.0/en/create-index.html

  

前缀支持和前缀长度(支持的位置)取决于存储引擎。例如,对于MyISAM表,前缀最长可达1000字节,对于InnoDB表,前缀最长可为767字节。

http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html

  

utf8,Unicode字符集的UTF-8编码,每个字符使用一到三个字节

您在CREATE INDEX时超出限制。

尽管sqlall告诉您没有任何密钥长于限制,但您可能会超出限制,因为您使用的utf8每个字符使用3个字节。

另一个可能的原因是你在Meta中使用了'unique_together'。这将需要更长的索引,这可能会导致问题。

答案 1 :(得分:0)

看起来像django中的一个错误。它可以通过例如1.2的版本固定。 http://code.djangoproject.com/changeset/13040