2

Есть ли какой-то шаг, который я пропустил, возможно, шаг «syncdb» для Google Cloud SQL? Я прочитал обе эти: Using Google Cloud SQLТаблица DatabaseError не существует для Django и Google Cloud SQL

Django Support

Мое приложение имеет доступ к Google Cloud SQL, но я думаю, что я просто создать таблицы в Google Cloud SQL. Что это за команда? Возможно, это исправит. Запуск python manage.py syncdb обновляет SQL на localhost, но я хочу обновить базу данных в Google Cloud SQl.

EDIT: Ниже приведены настройки Google Cloud SQL и параметры settings.py для моего проекта. Google Cloud SQL settings settings.py

+0

Не могли бы вы указать свой файл настроек и конфигурацию Google? Я думаю, вы не установили правильную базу данных. –

+0

вам нужно отредактировать свои настройки, чтобы он использовал удаленный SQL db, а не локальный, их syncdb обновит удаленный db – user2266449

+0

Спасибо! Как мне изменить текущие настройки? Я добавил их к вопросу. – Sticky

ответ

0

Есть три типа соединений: 1) ваш DEV машина на локальный экземпляр MySQL (Easy) 2) приложение двигатель экземпляр (в Google Cloud) к экземпляру Google Cloud SQL (то же самое путь, описанный в документе) 3) ваша машина-разработчик для экземпляра cloudql (Hard): поощряемый способ - получить статический IP-адрес (на какое-то время это не дорого стоит вам денег) и использовать IP для подключения экземпляра cloudql ,

Код Django [3] должен позволять вам переключаться между вышеуказанными случаями. Команда [1] позволяет синхронизировать с экземпляром cloudsql. Если вы хотите, чтобы ваша модель Джанго манипулировать данными в cloudsql Например, вы можете добавить конфигурационный [2], чтобы app.yaml

[1]

SETTING_MODE=prod ./manage.py syncdb 

[2]

env_variables: 
    SETTINGS_MODE: prod 

[3 ]

import os 
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/your-project-id:your-instance-name', 
      'NAME': 'django_test', 
      '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', 
      'HOST': 'static-ip-of-cloudsql-instance', 
      'PORT': '3306', 
      'NAME': 'django_test', 
      'USER': 'username', 
      'PASSWORD': 'password' 
     } 
    } 
else: 
    # Running in development, so use a local MySQL database. 
    DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.mysql', 
      'NAME': 'django_test', 
      'USER': 'root', 
      'PASSWORD': 'root', 
     } 
    } 
+0

Где я могу использовать команду [1]? Через командную строку в папке? Кроме того, это команда Linux: p я могу перевести на Windows, но все же. – Sticky

+1

Обновление: я добавил env_variable в app.yaml, но он по-прежнему выполняет syncdb для localhost. Я также не знаю преобразования команды [1] в Windows, по-видимому, потому что выполнение 'python SETTINGS_MODE = prod manage.py syncdb' не работает. – Sticky

 Смежные вопросы

  • Нет связанных вопросов^_^