2013-08-28 30 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将无法告诉应用程序想要由它来管理。 –