我有一个完整的操作区域设置django应用程序,但我在迁移到site5服务器时遇到了麻烦。
当我启动django的syncdb
命令时,我的所有模型表都被创建,但是(我猜它在创建关系表时),我收到以下错误:
_mysql_exceptions.OperationalError: (1071, 'Specified key was too long; max key length is 1000 bytes')
当我要求django同步locale db时,我没有任何问题,此错误只发生在服务器...
有什么想法吗?
答案 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