django south migrations sqlite to postgres on heroku

时间:2014-05-31 23:09:59

标签: django heroku django-south

自从django 1.2以来我一直在没有数据库迁移的情况下愚蠢地工作,而且我已经说够了,是时候看到1.7带来数据库迁移了。所以南方对我来说都是新手,这是一次艰难的尝试,试图让事情顺利进行,现在我把头发拉出来试图让它在heroku上工作。

我想我可能会因为把它添加到我的项目南方而让事情变得更糟。我最初的问题是从本地转移到heroku,然后能够迁移数据。现在,我尝试在django.db.utils.ProgrammingError: column "campaign_id" of relation "beaconmanager_beacon" already exists上运行迁移时获得beaconmanager

我想我现在需要知道的是:

  1. 南方是否使用不同的数据库,因为我有sqlite3用于本地开发,但我的开发heroku服务器运行Postgres?
  2. 上面的错误,删除我的迁移文件夹然后尝试在我的所有应用上运行convert_to_south会更好吗?
  3. 在heroku上实际使用south的正确方法是什么 - 我注意到应该在本地进行迁移,然后将其推送到heroku,但我们是运行schemamigration myapp --auto还是migrate myapp
  4. 很抱歉,如果这听起来像初学者的东西,但我确实只是向南走了。

1 个答案:

答案 0 :(得分:0)

在heroku和南方迁移中工作,你必须休息这一步。

1)在开发环境中生成schemamigrations文件。 (/.manage.py schemamigration [app_name] --auto)。

2)将这些文件添加到git存储库。

3)将git存储库推送到heroku。

4)在heroku环境中应用迁移(heroku run /.manage.py migrate [app_name])

如果要重置南迁移:

1)删除schemamigration文件。

2)刷新south migration_history表,如果你只想在migration_history中删除一个应用程序,你可以使用firfox addon SqlLite管理器来删除开发环境中的app记录。 (在生产环境中使用数据库管理器提供程序)。

3)将您的应用转换为南(./manage.py convert_to_south [app_name])

4)进行模型更改

5)创建shemamigration文件

6)迁移app