2017-11-30 4 views
0

다른 데이터베이스를 구성 허용 된 호스트 :장고 내가 관심이 개 <code>database</code>의 기본적인 하나 개발 한이

ALLOWED_HOSTS = ['xxx.xx.xxx.xx'] # I replaced it for the example 

포트 8006에서 서버를 시작합니다. 나는 이것을 개발하는데 사용합니다 :

$ python ./manage.py runserver xxx.xx.xxx.xx:8006 

그리고 여기서 프로덕션 데이터베이스를 수정합니다.

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'projectsdb_dev', 
     'USER': 'projectsdb', 
     'PASSWORD': 'notsecure', 
     'HOST': 'localhost', # Or an IP Address that your DB is hosted on 
     'PORT': '3306', 
    } 
} 

를 그리고 서버가 projectsdb_dev 데이터베이스와 상호 작용하는, 잘 작동 : 나는 기본 데이터베이스 이름을 대체 dev에 데이터베이스로 전환 할 수 있습니다. 내가 얻을, 8006 : 그러나 나는 설정 파일에서 사용할 수있는 두 데이터베이스를 유지하고 싶은 나는이 방법을 설정하는 자습서를 보았다 : 나는 xxx.xx.xxx.xx의 웹 페이지를 열 때 지금

DATABASES = { 
    'default': {}, 
    'prod': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'projectsdb', 
     'USER': 'projectsdb', 
     'PASSWORD': 'notsecure', 
     'HOST': 'localhost', # Or an IP Address that your DB is hosted on 
     'PORT': '3306', 
    }, 
    'dev': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'projectsdb_dev', 
     'USER': 'projectsdb', 
     'PASSWORD': 'notsecure', 
     'HOST': 'localhost', # Or an IP Address that your DB is hosted on 
     'PORT': '3306', 
    } 
} 

을 이 오류 :

ImproperlyConfigured at /admin/ 

settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details. 

난 그게 관련이 있는지 모르지만 나는 또한이 표를 가지고 :

mysql> select * from django_site; 
+----+--------------------+----------------+ 
| id | domain    | name   | 
+----+--------------------+----------------+ 
| 1 | example.com  | example.com | 
| 2 | xxx.xx.xxx.xx:8000 | projectsdb  | 
| 3 | xxx.xx.xxx.xx:8006 | projectsdb_dev | 
+----+--------------------+----------------+ 
3 rows in set (0.00 sec) 

가 어떻게 서버 내가 원하는 올바른 데이터베이스를 지정을 실행할 수 있습니까?

답변

0

나는 devprod에 대해 별도의 설정 파일을 만듭니다. 또는 데이터베이스의 경우에만 환경 변수로 수행 할 수 있습니다.

$ export ENV=PROD 

그런 다음

import os 
if os.environ.get('ENV') == "PROD": 
    DATABASES = { 
     'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'projectsdb', 
     'USER': 'projectsdb', 
     'PASSWORD': 'notsecure', 
     'HOST': 'localhost', # Or an IP Address that your DB is hosted on 
     'PORT': '3306', 
     }, 
    } 
else: 
    DATABASES = { 
     'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'projectsdb_dev', 
     'USER': 'projectsdb', 
     'PASSWORD': 'notsecure', 
     'HOST': 'localhost', # Or an IP Address that your DB is hosted on 
     'PORT': '3306', 
     }, 
    } 
0

당신은 기본 데이터베이스를 지정하지 settings.py에, 당신은 당신의 모델을 사용하는 데이터베이스를 지정하기 위해 자동 데이터베이스 라우터를 사용해야합니다. 이러한 라우터 클래스를 작성한 다음이를 가리 키도록 DATABASE_ROUTERS 설정을 지정합니다. 라우터는 기본적으로 데이터베이스 작업을 알리는 로직을 기본적으로 포함하고 있으며 이것이 개발 환경인지 여부를 확인할 수 있습니다.