2010-12-28 15 views
6

私は完全なロケールdjangoアプリケーションを持っていますが、site5サーバに移行中に問題が発生しています。私がいないサーバ上のdjangoのsyncdb中にエラーが発生しました

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

私はDjangoのsyncdbコマンドを起動すると、すべての私のモデルのテーブルが作成されますが、その後(それは関係テーブルの作成だとき、私は推測する)は、私は次のエラーを得ました私はdjangoにロケールdbを同期するように頼むときに何か問題があります。このエラーはサーバでのみ発生します...

何か考えですか?

+0

utf8データベースを使用している可能性がありますので、1000バイトの制限を超える可能性があります(文字には最大4バイトかかります)。 'python manage.py sqlall [package]'を実行しようとするとどうなりますか? – Nedec

+1

ローカルで使用しているMySQLサーバのバージョンとリモートサーバでいくつかの情報を提供できますか?また、いくつかのモデルが役に立つかもしれません。長いVARCHAR列にキーがあるようです。多分これらのリンクはあなたにヒントを与えるでしょう:http://bugs.mysql.com/bug.php?id=4541 http://bugs.mysql.com/bug.php?id=58187 – dmedvinsky

+0

あなたが使用しているdjangoのバージョン? –

答えて

3

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

Prefix support and lengths of prefixes (where supported) are storage engine dependent. For example, a prefix can be up to 1000 bytes long for MyISAM tables, and 767 bytes for InnoDB tables.

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

utf8, a UTF-8 encoding of the Unicode character set using one to three bytes per character

あなたはINDEXを作成するときには、制限を超えています。

sqlallは、キーのどれもが制限を超えていないと伝えますが、文字あたり3バイトを使用するutf8を使用しているため、制限を超える可能性があります。

さらに可能性のある理由は、あなたがメタで 'unique_together'を使用したことです。これには、問題を引き起こす可能性のあるより長いインデックスが必要です。

+0

'unique_together'は私のための原因です、それを修正する方法は何ですか?私はそれが必要なので、私は 'unique_together'を設定しました。 – JulienD

関連する問題