我已经在heroku上部署了一个django应用程序。这个应用程序在本地运行完美。但是,当我尝试在heroku应用程序上创建一个超级用户,以便我可以访问管理页面时,事情无法正常工作。我跑了:
heroku run python manage.py syncdb
heroku run python manage.py migrate
heroku run python manage.py createsuperuser
它似乎有效。我得到提示选择密码,电子邮件和用户名。然后说明:
Superuser created successfully.
但是,当我尝试在管理面板中登录时,用户名密码组合失败。当我尝试通过以下方式更改帐户密码时:
heroku run python manage.py changepassword admin
我明白了:
CommandError: user 'admin' does not exist
显然,heroku从未真正创造过超人。我在我的智慧结束,我不明白heroku dyno有什么问题。
答案 0 :(得分:0)
仅运行heroku run python manage.py createsuperuser
对我有用。但是@Nils,我想知道settings.py
文件中的哪一行需要调整以使其可以用于生产。
答案 1 :(得分:0)
您似乎正在使用诸如sqlite之类的保险丝系统基础数据库。
如您所知,Heroku has an ephemeral filesystem:
Heroku文件系统是短暂的-这意味着在dyno运行时,对文件系统的任何更改只会持续到dyno关闭或重新启动为止。每个dyno都会使用最新部署中的文件系统的干净副本进行引导
这就是为什么成功创建用户sun的原因,但是在下一个命令(更改传递)中,用户不存在。
我为大多数遇到相同问题的用户写这个答案。
答案 2 :(得分:0)
要检查发生了什么,请尝试两次运行以下行:
heroku run python manage.py migrate
heroku run python manage.py migrate
在一个好的设置中,第一次将运行迁移,而第二次将显示“不应用任何迁移”。如果您看到它两次都运行相同的迁移,则意味着Heroku中的数据库没有从一个调用到另一个调用持续存在,因此您需要更改数据库设置,例如通过connecting a postgres database。