2013-02-26 51 views
1

我是Heroku/Django/Postgres游戏的新手,并且按照其tutorial中的说明操作后遇到问题。这里是我的设置:Heroku Django安装后postgres数据库/ syncdb的问题

安装: Django的1.4.5 dj_database_url Postgress.app 9.2.2.0

DATABASES = { 
'default': { 
    'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 
    'NAME': 'db_name',      # Or path to database file if using sqlite3. 
    'USER': '',      # Not used with sqlite3. 
    'PASSWORD': '', 
    'HOST': '',      # Set to empty string for localhost. Not used with sqlite3. 
    'PORT': '',      # Set to empty string for default. Not used with sqlite3. 
} 
} 
settings.py中

,后来:

import dj_database_url 
    DATABASES['default'] = dj_database_url.config() 

当我运行python manage.py syncdb:

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/Users/joerobinson/.virtualenvs/dg/lib/python2.7/site-   packages/django/core/management/__init__.py", line 443, in execute_from_command_line 
utility.execute() 
    File "/Users/joerobinson/.virtualenvs/dg/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute 
self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/Users/joerobinson/.virtualenvs/dg/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv 
self.execute(*args, **options.__dict__) 
    File "/Users/joerobinson/.virtualenvs/dg/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute 
output = self.handle(*args, **options) 
    File "/Users/joerobinson/.virtualenvs/dg/lib/python2.7/site-packages/django/core/management/base.py", line 371, in handle 
return self.handle_noargs(**options) 
    File "/Users/joerobinson/.virtualenvs/dg/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 57, in handle_noargs 
cursor = connection.cursor() 
    File "/Users/joerobinson/.virtualenvs/dg/lib/python2.7/site-packages/django/db/backends/dummy/base.py", line 15, in complain 
raise ImproperlyConfigured("settings.DATABASES is improperly configured. " 
django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details. 

当我运行python manage.py壳,导入设置,并查看数据库,我得到:

{'default': {'ENGINE': 'django.db.backends.dummy', 'TEST_MIRROR': None, 'NAME': '', 'TEST_CHARSET': None, 'TIME_ZONE': 'UTC', 'TEST_COLLATION': None, 'PORT': '', 'HOST': '', 'USER': '', 'TEST_NAME': None, 'PASSWORD': 

所以我知道我必须配置不当的东西,但我还没有发现在一夜间正确的设置搜索。任何人见过这个?

回答

0

我只好点配置数据库网址如下:

DATABASES['default'] = dj_database_url.config(default='postgres://localhost/db_name') 

我不得不与该psycopg2包和gcc-4.2等问题,但这些都是不属于我的原来的帖子。

1

您可能想要一个真正的Django数据库后端,而不是django.db.backends.dummy。例如:

{'ENGINE': 'django.db.backends.postgresql_psycopg2', ... } 
+0

是的,我肯定希望如此。问题是我不确定django.db.backends.dummy插入的位置。必须是这一行:DATABASES ['default'] = dj_database_url.config()。我如何给dj_database_url.config()设置上面的数据库默认值? – Joe 2013-02-26 18:36:00

+0

@Joe啊,好的。抱歉。可能http://stackoverflow.com/a/3249215/398670或http://stackoverflow.com/questions/2947618/django-tutorial-says-i-havent-set-database-engine-setting-yet-but-i - 有? – 2013-02-27 00:05:30

0

我删除虚拟/ base.py和创建符号链接到它解决了同样的问题:

ln -s /usr/lib/python2.6/site-packages/django/db/backends/sqlite3/base.py /usr/lib/python2.6/site-packages/django/db/backends/dummy/base.py