2

是否有一個步驟讓我錯過了,或許是Google Cloud SQL的「syncdb」步驟?我讀了這兩: Using Google Cloud SQLDjango和Google Cloud不存在DatabaseError表SQL

Django Support

我的應用程序可以訪問谷歌雲SQL,但我想我只需要創建在谷歌雲SQL表。什麼是這樣做的命令?也許這會解決它。運行python manage.py syncdb更新本地主機上的SQL,但我想更新Google Cloud SQl上的數據庫。

編輯:下面是我的項目的Google雲SQL設置和settings.py。 Google Cloud SQL settings settings.py

+0

您能否顯示您的settings.file和Google配置?我認爲你沒有設置正確的數據庫。 –

+0

你必須編輯你的設置,以便它使用遠程SQL數據庫而不是本地的它們syncdb將更新遠程數據庫 – user2266449

+0

謝謝!我應該如何更改當前的設置?我將它們添加到了問題中。 – Sticky

回答

0

有三種類型的連接:! 1)你的dev的機器到本地MySQL實例(簡易) 2)你的應用程序引擎實例(在谷歌雲)到谷歌雲SQL實例(同文件中描述的方式) 3)您的開發機器爲cloudsql實例(硬盤):鼓勵的方式是獲取靜態IP(一段時間不花費您多少錢),並使用IP連接cloudsql實例。

Django代碼[3]應該允許您在上述情況之間切換。命令[1]允許您將syncdb複製到cloudsql實例。如果你希望你的Django模型在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命令:我可以轉換到Windows,但仍然。 – Sticky

+1

更新:我將env_variable添加到app.yaml,但仍將syncdb執行到localhost。我也不知道[1]命令到Windows的轉換顯然是因爲執行'python SETTINGS_MODE = prod manage.py syncdb'不起作用。 – Sticky