2016-02-02 27 views

Odpowiedz

8

Jeśli dobrze się spisuję, twoja aplikacja działa w App Engine (środowisko sandboxed) i używa Cloud SQL.

1) Skonfiguruj swoją bazę danych pod numerem settings.py, jak widać poniżej.

if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine'): 
    # Running on production App Engine, so use a Google Cloud SQL database. 
    DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.mysql', 
      'HOST': '/cloudsql/project-id:instance-name', 
      'NAME': 'database-name', 
      'USER': 'root', 
     } 
    } 
elif os.getenv('SETTINGS_MODE') == 'prod': 
    # Running in development, but want to access the Google Cloud SQL instance in production. 
    DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.mysql', 
      'INSTANCE': 'cloud-sql-instance-ip-address', 
      'NAME': 'database-name', 
      'USER': 'root', 
      'PASSWORD': 'password', 
     } 
    } 
else: 
    # Running in development, so use a local MySQL database. 
    DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.mysql', 
      'NAME': 'database-name', 
      'USER': 'username', 
      'PASSWORD': 'password', 
     } 
    } 

2) została ustawiona zmienna środowiskowa SETTINGS_MODE do prod (lub nie ustawiony, jeśli chcesz uzyskać dostęp do lokalnego serwera MySQL).

3) Uruchom poniższe polecenie z urządzenia.

$ SETTINGS_MODE=prod python manage.py migrate 

można znaleźć więcej szczegółów w dokumentacji App Engine - Management commands i Alternate development database and settings.

+0

Używam Django 1.9 i musiałem użyć * HOST * zamiast * INSTANCE *. –

+0

Dzięki za podzielenie się tym .. To całkiem dobrze mi poszło. Użyłem tej techniki do rozwiązania mojego problemu z uruchomieniem migracji w Google App Engine Flexible Environment – kenju254

+0

Witam. Nie mogę tego zrobić. I wydaje się, że jedynym zrozumiałym i wykonalnym rozwiązaniem, jakie znalazłem do tej pory. Mój jedyny problem to drugi krok "Ustaw zmienną środowiskową SETTINGS_MODE na prod" - jest to mylące. Gdzie to ustawić? W app.yaml (próbował już)? Gdzieś w konsoli Google (już wyglądał i próbował znaleźć, gdzie mogłem ..)? Lub w settings.py (ale nie ma to dla mnie większego sensu)? Wszelkie informacje pomogłyby. Z góry dziękuję. – CarmenA