【问题标题】:problems updating DB to heroku with south migrations使用南迁移将 DB 更新到 heroku 时出现问题
【发布时间】:2013-01-02 12:02:33
【问题描述】:

我有一个 Django proyect 在 heroku 中运行了一段时间,问题是,树几天前,我尝试更新我的模式模型,但是,每次我写的时候

heroku run python manage.py migrate quizzer

heroku 一直告诉我一切都是最新的,但我已经更改了我的 models.py 文件夹并像往常一样运行架构迁移。

如果您知道为什么会发生这种情况,或者我如何强制将架构迁移到我的 heroku 应用,请告诉我如何操作。

Ps:由于heroku中存储的数据和我本地服务器数据库中存储的数据不一样,我无法删除hole数据库,我不想丢失我的用户的数据

【问题讨论】:

  • 您是否在本地应用了架构迁移?你确定你创建了一个 schemamigration 并将其推送到 heroku 吗?
  • 我确定我已经在本地应用了 schemamigration,并将其推送到 heroku 是命令 --> heroku run python manage.py migrate quizzer
  • 您必须将迁移文件签入 git,然后将其推送到 heroku,然后才能运行该命令。看到我的答案了吗?

标签: django heroku migration django-south schema-migration


【解决方案1】:

requirements.txt 中可能缺少 South。试试:

pip freeze > requirements.txt

...后面跟着另一个 git add/commit/push。

另外,根据South installation instructions,必须先运行syncdb,“制作南迁跟踪表”。所以试试:

heroku run python manage.py syncdb

...然后再次尝试迁移命令。

【讨论】:

    【解决方案2】:

    我也有这个问题。我通过运行heroku restart 并再次运行migrate 命令解决了这个问题。不知道它为什么起作用(怀疑它与初始值有关),但至少它起作用了。

    希望有帮助!

    【讨论】:

    • 我很久以前就解决了这个问题,我不记得我在这里打开过它。解决方案是向后迁移,删除最新的迁移存档,提交更改,然后再次迁移。希望这对未来有帮助
    【解决方案3】:

    这是修改你的 models.py 后在 quizzer 上运行架构迁移的工作流程

    ./manage.py schemamigration quizzer --auto # create migration
    ./manage.py migrate quizzer # apply migration locally
    git add .
    git commit -m "Changed quizzer models, added schemamigration"
    git push heroku
    heroku run python manage.py migrate quizzer # apply migration on heroku
    

    听起来你可能忘记将迁移文件(通常在 appname/migrations 中找到)检查到 git 中,提交并推送到 heroku。

    【讨论】:

    • 如果代码更改会在运行之前破坏站点,如何运行迁移?考虑以下场景: 添加一个字段。代码被推送。服务器重新启动。在迁移运行之前,会访问该字段。我认为这可以通过在同一个数据库上运行两个站点来解决?
    • 我刚刚按照您的说明进行操作,但正在运行 python manage.py migrate quizzer 连接到终端... up, run.6116 未知命令:“迁移”键入“manage.py 帮助”以供使用。在我的 settings.py 中,我写了 INSTALLED_APPS = (..., 'south',..),这就是为什么我不知道为什么这个时间不起作用
    • @ustun 公平点,应用程序可能会在推送和迁移之间的时间内崩溃
    • @ustun 不幸的是我没有 2 个站点,每次我运行迁移时,我的服务器都会播下内部服务器错误,直到迁移发生,但因为它只有一分钟左右它不是没有问题,但是,如果你知道任何其他方法,请告诉我如何避免这个问题
    • @Sascuash 修复很简单,您必须更改工作流程,您必须将迁移添加到本地 del,将其添加到提交并仅推送该提交,将其应用到 heroku 然后您可以使用 model.py 添加另一个提交,这取决于正在完成的迁移。
    猜你喜欢
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 2019-04-17
    • 2012-05-03
    • 2011-08-11
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    相关资源
    最近更新 更多