推送到 Heroku 后“用户密码验证失败”
Posted
技术标签:
【中文标题】推送到 Heroku 后“用户密码验证失败”【英文标题】:"password authentication failed for user" after push to Heroku 【发布时间】:2012-08-12 10:55:36 【问题描述】:我按照heroku documentation 安装了一个 django 应用程序,起初它运行良好。一天后,我将一些更改推送到服务器。在那之后,我根本无法访问该应用程序:FATAL: password authentication failed for user "drjstoymyqyarj"
我什至不能再同步数据库了:
$ heroku run python manage.py syncdb
Running `python manage.py syncdb` attached to terminal... up, run.1
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
utility.execute()
File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
self.execute(*args, **options.__dict__)
File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute
output = self.handle(*args, **options)
File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/base.py", line 371, in handle
return self.handle_noargs(**options)
File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 57, in handle_noargs
cursor = connection.cursor()
File "/app/.heroku/venv/lib/python2.7/site-packages/django/db/backends/__init__.py", line 306, in cursor
cursor = self.make_debug_cursor(self._cursor())
File "/app/.heroku/venv/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 177, in _cursor
self.connection = Database.connect(**conn_params)
File "/app/.heroku/venv/lib/python2.7/site-packages/psycopg2/__init__.py", line 179, in connect
connection_factory=connection_factory, async=async)
psycopg2.OperationalError: FATAL: password authentication failed for user "drjstoymyqyarj"
FATAL: password authentication failed for user "drjstoymyqyarj"
我使用了 heroku 文档中推荐的数据库设置:
import dj_database_url
DATABASES = 'default': dj_database_url.config(default='postgres://localhost')
将代码推送到服务器后查看日志时,有一个我之前没有注意到的可疑Process exited with status 143
。也许这与它有关?
$ heroku logs
heroku[web.1]: State changed from up to starting
heroku[web.1]: Stopping all processes with SIGTERM
heroku[web.1]: Starting process with command `python ./manage.py runserver 0.0.0.0:41048 --noreload`
app[web.1]: Validating models...
app[web.1]:
app[web.1]: 0 errors found
app[web.1]: Django version 1.4, using settings 'ClosetList.settings'
app[web.1]: Development server is running at http://0.0.0.0:41048/
app[web.1]: Quit the server with CONTROL-C.
heroku[web.1]: Process exited with status 143
heroku[web.1]: State changed from starting to up
[编辑]
与heroku pg:psql
相同的错误消息。不过,我可以使用 heroku run python manage.py shell
打开 Django shell,但我无法访问其中的任何数据(当然也是同样的错误)。[/Edit]
对此的任何帮助表示赞赏。
【问题讨论】:
您是否测试过从heroku pg:psql
命令登录数据库?另外,你能打开一个shell:heroku run python manage.py shell
吗?您是否仔细检查过 DATABASES
变量是否未初始化两次?此外,Heroku 正在将数据库从旧系统迁移到新系统。您是否尝试过手动执行此过程?
【参考方案1】:
运行
heroku config
并查看是否配置了超过 2 个 heroku dbs,并查看 DATABASE_URL 是否指向您配置的数据库。如果没有,那么您可以通过运行将您的数据库提升为默认的 DATABASE_URL:
heroku pg:promote HEROKU_POSTGRESQL_GREEN
HEROKU_POSTGRESQL_GREEN 是您的数据库名称,您将在配置中看到 HEROKU_POSTGRESQL_GREEN_URL。
一旦您配置的数据库升级为默认数据库,您就可以开始了。
【讨论】:
我现在无法真正测试,因为我在 heroku 上重新创建了该应用程序,它现在运行良好。不过,您的答案确实看起来很有希望。我会尝试一下,以防我再次遇到问题。 实际上,我昨天遇到了同样的问题并想出了这个解决方案。 :) 非常感谢您的回答。 以防万一它有帮助,在运行 heroku config 后,我看到我在 heroku 中的配置变量在密码中有一个“隐藏”空间,我必须添加一个字符保存变量然后删除变量,很奇怪,但感谢您的评论,我能够看到控制台中的空间以上是关于推送到 Heroku 后“用户密码验证失败”的主要内容,如果未能解决你的问题,请参考以下文章
尝试将本地数据库推送到 Heroku 后出现“ActionView::Template::Error (Unknown primary key for table”