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?