将Django部署到Heroku(Psycopg2错误)

Mse*_*enb 9 python deployment django postgresql heroku

所以我正在跟随django的heroku入门指南.但是,当我运行此命令时:

heroku run python manage.py syncdb
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

psycopg2.OperationalError: could not connect to server: Connection refused
Is the server running on host "localhost" and accepting
TCP/IP connections on port 5432?
Run Code Online (Sandbox Code Playgroud)

我认为这意味着数据库尚未设置...所以我手动添加了shared_db选项:

heroku addons:add shared-database:5mb
Run Code Online (Sandbox Code Playgroud)

但是..我仍然得到同样的错误.是什么赋予了?

Phi*_*nyy 8

编辑:

正如@mipadi在这里指出的那样(http://stackoverflow.com/questions/13001031/django-heroku-settings-injection/13092534),它实际上可以像这样简单:

import dj_database_url

DATABASES = {'default' : dj_database_url.config() }
Run Code Online (Sandbox Code Playgroud)

如果您有一个DATABASE_URL env变量集,则此方法有效.heroku:pg_promote让你在那里.详情如下


确保你的Heroku上有Postgres

heroku addons:add heroku-postgresql:dev
Run Code Online (Sandbox Code Playgroud)

第1步:找出您的数据库网址

heroku config | grep POSTGRESQL
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样:

HEROKU_POSTGRESQL__URL:postgres:// user:password @ host:5432/blabla

第2步:从上一步骤中获取设置名称(例如HEROKU_POSTGRESQL_ROSE_URL)并将其放入您的设置文件中

DATABASES = {'default': dj_database_url.config(default=os.environ["HEROKU_POSTGRESQL_ROSE_URL"])}
Run Code Online (Sandbox Code Playgroud)

[更新]正如Ted指出的那样,有一种方法可以将颜色URL提升为DATABASE_URL变量:

heroku pg:promote HEROKU_POSTGRESQL_ROSE_URL
Run Code Online (Sandbox Code Playgroud)

然后,您的数据库设置可以使用DATABASE_URL,而不是更奇特的彩色URL

DATABASES = {'default': dj_database_url.config(default=os.environ["DATABASE_URL"])}
Run Code Online (Sandbox Code Playgroud)

鲍勃是你的叔叔


Mse*_*enb 1

我的应用程序结构已关闭...heroku 希望结构如下所示:

toplevel
  requirements.txt
  myapp
    manage.py
    all other django stuff
Run Code Online (Sandbox Code Playgroud)