【问题标题】:Problems with postgres database / syncdb after Heroku Django setupHeroku Django 设置后 postgres 数据库/syncdb 的问题
【发布时间】:2013-02-11 13:52:12
【问题描述】:

我是 Heroku / Django / Postgres 游戏的新手,在按照他们的tutorial 中的说明操作后遇到了麻烦。这是我的设置:

已安装: 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 shell、导入设置并查看 DATABASES 时,我得到:

{'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':

所以我知道我一定是配置不正确,但经过一夜的搜索,我还没有找到正确的设置。有人见过这个吗?

【问题讨论】:

    标签: database django postgresql heroku


    【解决方案1】:

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

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

    【讨论】:

    • 是的,我绝对想要那个。问题是我不确定 django.db.backends.dummy 插入的位置。必须是这一行:DATABASES['default'] = dj_database_url.config()。如何给 dj_database_url.config() 我上面设置的数据库默认值?
    • @Joe 啊,好的。对不起。可能是stackoverflow.com/a/3249215/398670stackoverflow.com/questions/2947618/…
    【解决方案2】:

    我不得不点配置数据库URL如下:

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

    我遇到了与 psycopg2 包和 gcc-4.2 相关的其他问题,但我的原始帖子并未涵盖这些问题。

    【讨论】:

      【解决方案3】:

      我通过删除 dummy/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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-19
        • 2017-01-09
        • 2019-08-05
        • 1970-01-01
        • 2021-10-19
        • 1970-01-01
        • 2012-06-19
        相关资源
        最近更新 更多