2017-04-04 8 views
0

Djangoを1.8から1.9にアップグレードしようとしていますが、移行を実行するとエラーが発生します。以下はスタックトレースです。Djangoを1.8から1.9にアップグレードする問題

Stack trace

これは、[参考文献:ticket]をモデル化するために、フォームから認証ユーザ名の単一性のロジックを移動させることであるジャンゴ1.9で導入された新たな移動です。しかし、アップグレードする前に、ユーザ名文字の長さをデフォルトの30文字の長さから75文字に増やすためにここで述べた少しのhackを実装しました。今、私がマイグレーションを実行するとき、それはユーザー名の最初の30文字だけを考えており、Integrity Errorを投げています。これを回避する方法はありますか?複雑な合併症が多いので、私はカスタム認証モデルに行きたくありません。

+0

DBには多くのユーザーがいますか? –

+0

@AndreyShipilovはいあります。 – Conans

+0

厳しい選択肢の1つは、重複したユーザー名を取得し、最後に数字を追加して、すべてを一意のものに変更することです。それから、移行して戻します。 –

答えて

0

まず、移行0006に移行していない場合は移行してください。

./manage.py migrate auth 0006_require_contenttypes_0002 

すると、Djangoの1.10(または1.11 LTS)がリリースだと、そして偽の移行0007.

./manage.py migrate auth 0007_alter_validators_add_error_messages --fake 

この移行は、30個の文字に75個の文字から列を軽減しようとしているにアップグレードすることので偽造されなければならない。

その後、あなたはauthのための移行の残りの部分を実行することができます。特に

./manage.py migrate auth 

、移行0008をDjangoの1.10意志increase the max length of the username 150文字から。つまり、問題を引き起こす可能性のあるユーザー名の最大長を変更するためにハッキングを削除できます。

安全面であるために、0007を偽ってDjango 1.9にアップグレードすることはお勧めしません。私は、移行を偽ってあなたのユーザー名の長さのハックを維持するかどうかは私が考えていない問題を引き起こすかどうかは分かりません。

関連する問題