所以,我从下面的Heroku入门指南和Django。 然而,当我运行以下命令:
heroku run python manage.py syncdb
我得到这个错误
psycopg2.OperationalError: could not connect to server: Connection refused
Is the server running on host "localhost" and accepting
TCP/IP connections on port 5432?
我认为这意味着该数据库中尚未设定...所以我手动添加shared_db选项,以及:
heroku addons:add shared-database:5mb
但是..我仍然得到同样的错误。 是什么赋予了?
编辑:
作为@mipadi指出这里(http://stackoverflow.com/questions/13001031/django-heroku-settings-injection/13092534),它实际上是这么简单:
import dj_database_url
DATABASES = {'default' : dj_database_url.config() }
这工作,如果你有一个DATABASE_URL环境变量设置。 Heroku的:pg_promote得到你那里。 下面详细
请确保你有你的Heroku Postgres的
heroku addons:add heroku-postgresql:dev
第1步:找出你的数据库的URL
heroku config | grep POSTGRESQL
输出会是这个样子:
HEROKU_POSTGRESQL__URL:Postgres的://用户名:密码@主机:5432 /布拉布拉
第2步:从前面的步骤(如HEROKU_POSTGRESQL_ROSE_URL)抓斗的设置名称,并把它放在你的设置文件中,像这样
DATABASES = {'default': dj_database_url.config(default=os.environ["HEROKU_POSTGRESQL_ROSE_URL"])}
[更新]作为泰德指出,有促进颜色网址DATABASE_URL变量的方式:
heroku pg:promote HEROKU_POSTGRESQL_ROSE_URL
然后,您的数据库设置可以使用DATABASE_URL,而不是更奇特的彩色URLS
DATABASES = {'default': dj_database_url.config(default=os.environ["DATABASE_URL"])}
鲍勃是你的叔叔
我把它通过添加以下代码的settings.py自己的工作,似乎是出于某种原因的Heroku没有添加对我来说....
通常,它总是添加在Heroku上的代码动态,但我想的Django 1.4后,它并没有因为某种原因做了。 或者,我只是做了什么。
反正这是代码只需将它添加到您的settings.py,它应该像以前一样工作。
import sys
import urlparse
import os
# Register database schemes in URLs.
urlparse.uses_netloc.append('postgres')
urlparse.uses_netloc.append('mysql')
try:
# Check to make sure DATABASES is set in settings.py file.
# If not default to {}
if 'DATABASES' not in locals():
DATABASES = {}
if 'DATABASE_URL' in os.environ:
url = urlparse.urlparse(os.environ['DATABASE_URL'])
# Ensure default database exists.
DATABASES['default'] = DATABASES.get('default', {})
# Update with environment configuration.
DATABASES['default'].update({
'NAME': url.path[1:],
'USER': url.username,
'PASSWORD': url.password,
'HOST': url.hostname,
'PORT': url.port,
})
if url.scheme == 'postgres':
DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2'
if url.scheme == 'mysql':
DATABASES['default']['ENGINE'] = 'django.db.backends.mysql'
except Exception:
print 'Unexpected error:', sys.exc_info()
我的应用程序结构是关闭... Heroku的希望结构如下所示:
toplevel
requirements.txt
myapp
manage.py
all other django stuff
我有同样的问题,这是我如何解决它
第一步:按照菲利普的第1步获取数据库名称(彩色)
第2步:
$ heroku pg:promote HEROKU_POSTGRESQL_<COLOR>
导致输出
Promoting HEROKU_POSTGRESQL_<COLOR> to DATABASE_URL... done
您需要添加到您的requirements.txt:
psycopg2
默认情况下,配置的Heroku Postgres的数据库,并注入代码到你的settings.py(https://devcenter.heroku.com/articles/django#postgres_database_config)。 这从环境变量DATABASE_URL读取,但需要安装psycopg2。