【问题标题】:django south migrations sqlite to postgres on herokudjango 南迁移 sqlite 到 heroku 上的 postgres
【发布时间】:2014-07-21 10:26:17
【问题描述】:

自 django 1.2 以来,我一直在没有数据库迁移的情况下愚蠢地工作,我已经说过足够了,是时候跟上时代了,因为 1.7 带来了数据库迁移。所以南方对我来说是全新的,试图让事情顺利进行是一段艰难的旅程,现在我正在努力让它在 heroku 上工作。

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

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

  1. South 是否适用于不同的数据库,因为我有 sqlite3 用于本地开发,但我的 dev heroku 服务器使用 Postgres 运行?
  2. 上面的错误,删除我的迁移文件夹然后尝试在我所有的应用程序上运行convert_to_south会更好吗?
  3. 在 heroku 上实际使用 south 的正确方法是什么 - 我注意到应该在本地进行迁移,然后推送到 heroku,但我们是运行 schemamigration myapp --auto 还是只运行 migrate myapp

很抱歉,这听起来像是初学者的东西,但我确实刚刚开始向南学习。

【问题讨论】:

    标签: django heroku django-south


    【解决方案1】:

    在进行 heroku 和南迁移时,您必须放弃这些步骤。

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

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

    3) 将 git 仓库推送到 heroku。

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

    如果您想重置南迁移:

    1) 删除架构迁移文件。

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

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

    4) 更改模型

    5) 创建迁移文件

    6) 迁移应用

    【讨论】:

    • 感谢您的努力,但是我现在已经移到 1.7,所以不再需要南。感谢您抽出宝贵时间回答这个问题。
    猜你喜欢
    • 1970-01-01
    • 2021-09-21
    • 2011-11-19
    • 2016-08-24
    • 2011-04-03
    • 1970-01-01
    • 2021-06-17
    • 2021-05-23
    相关资源
    最近更新 更多