2013-08-28 33 views
4

我在Django南遷移時遇到問題。這可能與我們如何建立我們的項目有關,但它之前工作正常,而且在當地工作正常。heroku django south似乎並未使用遷移

我昨晚推新代碼,其中包含在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中。

UPDATE

的問題是,這個特殊的遷移目錄失蹤__init__.py.convert_to_south運行命令通過Heroku的不影響這是本地文件的更改不沾。再次用該文件推動回購確認遷移。然後我只需假冒第一次移民,我就很好。

+1

我可能找到了解決方案。看起來被推送到heroku的my_app/migrations目錄缺少__init__.py文件。運行convert_to_south將創建該文件,但是,使用heroku命令行無法使用這些文件。我相信這個解決方案仍然需要測試,就是使用__init__並推動這一改變。 –

+3

請您將您的更新轉到答案並接受答案,以便將其不再列爲未答覆的問題? –

回答

4

確保您想要遷移的應用程序的migrations文件夾中有init.py文件。 South將在當地工作,但不會在heroku上進行生產。只需從您的一個應用程序中複製init.py文件,然後將其放入您遇到錯誤的應用程序的migrations文件夾中即可。將該更改推送到生產,然後進行遷移。

+0

Pstrazzulla是正確的,如果沒有檢測到__init__.py,south將無法告訴應用程序想要由它來管理。 –