Heroku 不会在 Django 上迁移模型

Posted

技术标签:

【中文标题】Heroku 不会在 Django 上迁移模型【英文标题】:Heroku doesnt migrate models on Django 【发布时间】:2021-11-29 12:47:46 【问题描述】:

我只是将我的 Django 应用程序部署到 Heroku,但我无法将我的迁移迁移到 Heroku。首先我运行: heroku run python manage.py migrate 所有迁移列表都正常,但是当我显示迁移时,它们都没有迁移(全为空白 [])。

然后我尝试heroku run bash 并从那里迁移,一切似乎都很好,即使来自 bash 的显示迁移显示所有迁移都在工作。我什至设法创建了一个超级用户。但是当我打开我的管理页面并使用超级用户登录时,它显示“account.account”表不存在,当我再次检查 showmigrations 时,所有迁移都消失了。我一遍又一遍地重复这种迁移,但仍然无法弄清楚。

有人知道我在这里做错了什么吗?

编辑: 我不知道这是否相关,但是当我第一次将我的项目推送到 Heroku 时,我正在使用带有此设置的 Postgre:

DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': DB_NAME,
        'USER': DB_USER,
        'PASSWORD': DB_PASSWORD,
        'HOST': 'localhost',
        'PORT': '5432',
    

但是当我尝试运行迁移时,它显示了一个错误,例如无法使用 5432 端口访问本地主机,结果表明 Heroku 试图在我的本地主机中访问 postgre 而不是使用 Heroku Postgres。我找到的解决方案是转储我的数据库并将其重新加载到 Heroku。因为我不知道如何设置它。我只是评论该 postgre 设置并将其替换为默认 django 设置:

DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    

创建我的 dbsqlite 文件,再次运行迁移,然后再次将其推送到 Heroku,希望找到一个简单的方法,但结果却遇到了这个问题

【问题讨论】:

【参考方案1】:

我建议您将迁移的项目推送到 heroku,即

python manage.py migrate

然后将该迁移的项目推送到heroku

在从 heroku bash 创建超级用户时,您的超级用户没有被存储的原因是因为 heroku 有一个临时驱动器,即 heroku 在相等的时间间隔后从原始推送中清除所有修改过的数据。

【讨论】:

我的应用在被推送到 Heroku 之前已经迁移 添加了上下文的编辑,可能与问题有关【参考方案2】:

原来我忘了安装 django-heroku。更多信息:https://devcenter.heroku.com/articles/django-app-configuration

【讨论】:

以上是关于Heroku 不会在 Django 上迁移模型的主要内容,如果未能解决你的问题,请参考以下文章

在 Heroku 上,在实例已经使用更改的模型代码重新启动后,Django syncdb / South 迁移是不是存在危险?

如何使用 Python 迁移将 Heroku Django 应用程序的新模型表添加到远程 Heroku Postgres?

Heroku 上的迁移问题

Django迁移在Heroku上无法正常工作[重复]

将数据库从本地 django 迁移到 heroku

在 Heroku 上部署时出现 Django 1.7 迁移错误