6

完全に動作するロケールdjangoアプリを持っていますが、site5サーバーへの移行中に問題が発生します。

djangoのsyncdbコマンドを起動すると、すべてのモデルのテーブルが作成されますが、(リレーションシップテーブルを作成しているときに推測されます)、次のエラーが発生しました。

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

djangoにロケールデータベースを同期するように依頼しても問題はありません。このエラーはサーバーでのみ発生します...

何か案が?

4

2 に答える 2

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、1文字あたり1〜3バイトを使用するUnicode文字セットのUTF-8エンコーディング

CREATE INDEXを実行すると、制限を超えます。

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

もう1つの考えられる理由は、メタで「unique_together」を使用したことです。これには、より長いインデックスが必要になり、問題が発生する可能性があります。

于 2012-01-18T05:06:56.517 に答える
0

ジャンゴのバグのようです。1.2 リリースでは、たとえばhttp://code.djangoproject.com/changeset/13040で修正される可能性があります。

于 2010-12-30T15:07:05.727 に答える