2012-04-19 12 views
33

간단한 django 1.4 프로젝트를 생성했으며 syncdb를 실행하여 (postgres) db 스키마를 생성하려고합니다. 이 오류를 받고 있어요 : - 같은"settings.DATABASES가 부적절하게 구성되었습니다."django 1.4와 syncdb를 수행하는 중 오류가 발생했습니다.

Traceback (most recent call last): 
File "manage.py", line 10, in <module> 
execute_from_command_line(sys.argv) 
File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 443, in execute_from_command_line 
utility.execute() 
File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 382, in execute 
self.fetch_command(subcommand).run_from_argv(self.argv) 
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 196, in run_from_argv 
self.execute(*args, **options.__dict__) 
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 232, in execute 
output = self.handle(*args, **options) 
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 371, in handle 
return self.handle_noargs(**options) 
File "/usr/local/lib/python2.6/dist-packages/django/core/management/commands/syncdb.py", line 57, in handle_noargs 
cursor = connection.cursor() 
File "/usr/local/lib/python2.6/dist-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. 

내 settings.py 파일을 찾습니다 -

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

내가 psql의 확인을 사용하여 데이터베이스에 연결할 수 있습니다 - 어떤 아이디어? 미리 감사드립니다!

+4

'./manage.py diffsettings '의 출력에있는'DATABASES' 행은 어떻게 보이나요? – okm

+1

DATABASES = { '기본': { '엔진': 'django.db.backends.', '이름': '', '호스트': '', '사용자': '', '비밀번호 : '포트': ''}}. 그거 잘못된 거 같아? 어떻게 고칠 수 있니? – bzo

답변

22

django가 사용하는 것으로 생각하는 settings.py 파일에 액세스하지 않았을 수 있습니다. 이 다음 작동하는 경우 사용 --settings에 의해

./manage.py --settings=nameofproject.settings runserver/syncdb 

을 설정 파일에 장고를 가리 킵니다 명시 적으로 시도, 당신은 장고 잘못된 설정 파일을 가져 오는 이유를 파악해야합니다.

우연히 1.3에서 1.4로 업그레이드하셨습니까?

+2

감사합니다. 모두 수정되었습니다. 이것은 1.3 -> 1.4 업그레이드 문제였습니다. 청소 및 django 다시 설치하고 모두 괜찮 았어. – bzo

+1

또 다른 팁은 다음을 사용하여 설정을 확인하는 것입니다 : echo $ DJANGO_SETTINGS_MODULE - 이것이 예상치 못한 것으로 설정되면이 오류가 발생할 수 있습니다. 그렇다면 다음을 사용하여이 명령에 대한 설정 만 테스트 할 수 있습니다. DJANGO_SETTINGS_MODULE = nameofproject.settings ./manage.py runserver – RichVel

+0

@Jonas django 1.7에 대한 명령을 알려주십시오. syncdb가 작동하지 않기 때문입니다 –

3

업데이트 한 settings.py 파일은 무엇입니까? 나는 Django의 1.3에서 1.4 로의 변경 사항을 두 번 읽어 들여 읽지 않았을 때 처음에는 똑같은 문제가있었습니다. 다음은 https://docs.djangoproject.com/en/1.4/releases/1.4/#updated-default-project-layout-and-manage-py 발췌 부분입니다. Django (현재 1.4.2)의 최신 버전은 startproject 관리 명령에 대한 업데이트 된 기본 프로젝트 레이아웃과 manage.py 파일과 함께 제공되며 기본 프로젝트 레이아웃이 변경되었습니다.

오류를 수정하려면 올바른 settings.py 파일은 주 프로젝트 디렉토리에있는 것이 아니라 프로젝트 디렉토리 내에 생성 된 디렉토리 (같은 이름)에 있습니다. (당신의 OS는 UNIX와 같은 경우)

4

프로젝트에 두 개의 'settings.py'파일이 있습니다

  • 하나는/
  • 하나는 디렉토리에있는 첫번째 디렉토리에있는 디렉토리

두 번째 엔진 (dir/dir/setting.py)에 엔진을 작성해야합니다.

행운을 빈다.

0

Django를 다시 설치하면 다음 링크에서 제안하는 것처럼 (실제로 달걀 파일을 제거하는) 트릭을 만들었습니다. https://code.djangoproject.com/ticket/18058 1.3에서 1.4로 업그레이드하면 이러한 문제가 많이 발생하는 것으로 보입니다. Heroku가 PostgreSQL 데이터베이스

를 사용

배경

장고 1.6 Heroku가 프로젝트 내가 PostgreSQL 서버에 직접 개발하고 싶었 : 나를 위해

12

, 나는 지금 장고 1.6와 비슷한 문제가 있었다 (그래서 "를 복사하지 마십시오.당신은 또한 PostgreSQL을 사용하지 않을 경우 postgresql_psycopg2 "비트)

  • 내가

    DATABASES['default'] = dj_database_url.config(default=os.getenv('DATABASE_URL')) 
    
DB를 Heroku가를 사용할 수있는 라인을 주석 처리 할 때
  • 가 오류가있어 지역 psql의의 DB를 사용하여 개발 문제 없음

    처음 시도는 다른 줄과 같은 세부 정보를 추가하는 것이 었습니다.

    DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2' 
    

    오류가 발생하여 NAME을 (를) 요청했기 때문에이 작업이 거부되었습니다.

    결국 솔루션

    이 그것을 해결 :

    1. 내 세부 형식으로 나에게 선물보고 "에게 Heroku의 설정을"실행 :

      postgres://user:[email protected]/dbname 
      
    2. 세부 사항을 반영하도록 settings.py 파일을 업데이트했습니다 :

      DATABASES = { 
          'default': { 
           'ENGINE': 'django.db.backends.postgresql_psycopg2', 
           'NAME': 'your_heroku_db_name',      
           'USER': 'your_heroku_db_user_name', 
           'PASSWORD': 'your_heroku_password', 
           'HOST': 'ec2-23-21-133-106.compute-1.amazonaws.com', # Or something like this 
           'PORT': '5432',      
          } 
      } 
      

      은 끝이 https://stackoverflow.com/a/19719966/870121

      주 있음 : 내 다음 계획은 그때 이후 라인을 주석이 다시 .env의 변수로 추상보다는

    3. settings.py

      에 표시를 남겨이며,

      # DATABASES['default'] = dj_database_url.config(default=os.getenv('DATABASE_URL')) 
      

      그래서 데이타베이스 만 settings.py 파일

      그런 식으로 한 번 지정 프로그램이

      예를 들어 DB를 PostgreSQL의의 Heroku가에 연결하는 데 필요한 모든 것을 읽어 당신은 로컬을 을 개발하려고 위의 모든 주석 대신 설정하려면, 지금 python manage.py syncdb


    을 위해 노력하고 있습니다 해당 지역의 postgresql 서버는 위의 해당 지역에 해당하는 내용의 주석을 제거합니다.

    DATABASES = { 
        'default': { 
         'ENGINE': 'django.db.backends.postgresql_psycopg2', 
         'NAME': 'cool01db', 
         'USER': '', 
         'PASSWORD': '', 
         'HOST': 'localhost', # '127.0.0.1' probably works also 
         'PORT': '5432', 
        } 
    } 
    

    m https://stackoverflow.com/a/25962586/870121

  • +0

    덕분에, 그것은 나에게 매우 도움이되었습니다! (heroku에서는 잘 작동했지만 로컬에서는 그렇지 않습니다 ...) – Hoff

    +0

    heroku 문서가 너무 복잡하여 혼란 스럽습니다. – 82din

    관련 문제