3

既存のモデル/テーブルに新しいフィールドを追加しようとすると、「テーブルはすでに存在します」というDatabaseErrorが発生します。これより前に移行を実行したことがあるので、新しいフィールドを追加するとこのエラーが表示される理由に少し戸惑います。

実行されるコマンド:

python manage.py schemamigration app --auto
python manage.py migrate app

このような以前のSOの質問は、移行を偽造することで回答されました。

python manage.py migrate app --fake
python manage.py migrate app

これから生じる問題は、列が作成されないことです。したがって、serverを実行すると、DatabaseError'nosuchcolumn'が表示されます。

私のモデルに関しては、CharFieldのみを追加しています。

よろしくお願いします-

4

3 に答える 3

12

schemamigration app --initial最初に新しいフィールドなしで実行する必要がありますmigrate app --fake 0001(または返された移行番号) 南データベースをその状態 (テーブルは既に作成されています) に設定します。

新しいフィールドを追加し、実行schemamigration myapp --autoしてから移行します。

于 2012-05-26T20:56:02.317 に答える
1

フィールドをコメントアウトし、schemamigration を実行してから移行しました。フィールドのコメントを外し、schemamigration を実行してから移行すると、うまくいきました。何が間違っていたのかわかりません。

于 2012-05-26T21:07:54.793 に答える
0

これは、移行時に何かを行っていて、南にそれを知らせなかった場合に発生します。

データベースの south_* テーブルを見ると、south がデータベースのデータベース移行に関するログを保持していることがわかります。一般的な方法は、移行を偽装することです。fake南部には議論があります。

ここで、すべてについて知ることができます: http://south.readthedocs.org/en/latest/commands.html#options

于 2012-05-27T10:37:48.793 に答える