我刚刚将Django应用部署到Heroku,但我不能将我的迁移迁移到Heroku。首先我跑:heroku run python manage.py migrate
所有的迁移列表为OK,但当我显示迁移时,它们都没有迁移(全部为空白[])。
然后我尝试heroku run bash
并从那里迁移,一切似乎都很好,甚至从bash显示所有迁移都在工作。我甚至创建了一个超级用户。但是当我打开我的管理页面并以超级用户登录时,它显示"帐户"。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,希望找到一个简单的方法,但最终却出现了这个问题
我建议您将已迁移的项目推送到heroku
python manage.py migrate
然后将迁移后的项目推送到heroku
在heroku bash中创建超级用户时,你的超级用户没有被存储的原因是heroku有一个临时驱动器,即heroku在相同的时间间隔后从原始push中清除所有修改过的数据。
原来我忘记安装django-heroku了。更多信息:https://devcenter.heroku.com/articles/django-app-configuration