4

Django の南への移行に問題があります。プロジェクトのレイアウト方法に関連している可能性がありますが、以前は機能していましたが、ローカルでは正常に機能しています。

昨夜、my_appアプリの移行を含む新しいコードをプッシュしました。私のローカル環境では...

$ ./manage.py migrate --list
socialaccount
(*) 0001_initial
(*) 0002_genericmodels
(*) 0003_auto__add_unique_socialaccount_uid_provider
(*) 0004_add_sites
(*) 0005_set_sites
(*) 0006_auto__del_field_socialapp_site
(*) 0007_auto__add_field_socialapp_client_id
(*) 0008_client_id
(*) 0009_auto__add_field_socialtoken_expires_at
(*) 0010_auto__chg_field_socialtoken_token
(*) 0011_auto__chg_field_socialtoken_token
payments
(*) 0001_initial
users
(*) 0001_initial
my_app
(*) 0001_initial
(*) 0002_auto__add_organizerapplication

heroku では、my_app をマイグレーションのあるアプリとして認識しません。そのアプリを移行しようとすると....

$ heroku run my_app/manage.py migrate my_app --app=my_app

Running my_app/manage.py migrate my_app attached to terminal... up, run.5016
The app 'my_app' does not appear to use migrations.
./manage.py migrate [appname] [migrationname|zero] [--all] [--list] [--skip] [--merge] [--no-initial-data] [--fake] [--db-dry-run] [--database=dbalias]

移行をリストすると、 my_app がリストされていないことに気付くでしょう...

$ heroku run my_app/manage.py migrate --list --app=my_app

Running my_app/manage.py migrate --list attached to terminal... up, run.8264

socialaccount
(*) 0001_initial
(*) 0002_genericmodels
(*) 0003_auto__add_unique_socialaccount_uid_provider
(*) 0004_add_sites
(*) 0005_set_sites
(*) 0006_auto__del_field_socialapp_site
(*) 0007_auto__add_field_socialapp_client_id
(*) 0008_client_id
(*) 0009_auto__add_field_socialtoken_expires_at
(*) 0010_auto__chg_field_socialtoken_token
(*) 0011_auto__chg_field_socialtoken_token
payments
(*) 0001_initial
users
(*) 0001_initial

関連性があるかどうかはわかりませんが、チェックするmy_appとリストに表示されます。INSTALLED_APPS

アップデート

問題は、この特定の移行ディレクトリが欠落していたことでした。Heroku__init__.py.などを介してコマンドを実行しても、ローカル ファイルの変更が保持されないため、これには影響しません。convert_to_southそのファイルを使用してリポジトリを再度プッシュすると、移行が認識されました。その後、最初の移行を偽造する必要がありましたが、うまくいきました。

4

1 に答える 1

4

移行するアプリの migrations フォルダーに init.py ファイルがあることを確認してください。South はローカルで動作しますが、heroku の本番環境では動作しません。いずれかのアプリから init.py ファイルをコピーし、エラーが発生しているアプリの migrations フォルダーに配置するだけです。その変更を本番環境にプッシュしてから、移行します。

于 2014-06-03T14:41:46.147 に答える