简体   繁体   中英

Google App Engine, Django: Tables are not made in Google cloud SQL after deployment

I am deploying a website with django-backend on google app engine. I followed their tutorial . I have run the website on my local server using MySQL and it runs perfectly. When deploy it on Google App Engine it gives me the following error:

ProgrammingError "Table 'clouddatabasename'.'appname'_'modelname' doesn't exist"

Here is my app.yaml:

# [START django_app]
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /static
  static_dir: static/
- url: .*
  script: wt.wsgi.application

# Only pure Python libraries can be vendored
# Python libraries that use C extensions can
# only be included if they are part of the App Engine SDK 
# Using Third Party Libraries: https://cloud.google.com/appengine/docs/python/tools/using-libraries-python-27
libraries:
- name: MySQLdb
  version: 1.2.5
- name: django
  version: "1.11"

env_variables:
    CLOUDSQL_CONNECTION_NAME: 'copied perfectly from google cloud sql instance'
    CLOUDSQL_USER: username
    CLOUDSQL_PASSWORD: password

# [END django_app]

# Google App Engine limits application deployments to 10,000 uploaded files per
# version. The skip_files section allows us to skip virtual environment files
# to meet this requirement. The first 5 are the default regular expressions to
# skip, while the last one is for all env/ files.
skip_files:
- ^(.*/)?#.*#$
- ^(.*/)?.*~$
- ^(.*/)?.*\.py[co]$
- ^(.*/)?.*/RCS/.*$
- ^(.*/)?\..*$
- ^env/.*$

Here is my settings.py:

if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine'):
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'database_name',
            'USER': 'user_name',
            'PASSWORD': 'password',
             'HOST': '/cloudsql/copied perfectly from google cloud sql instance',

        }
    }
else:

    DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'HOST': '127.0.0.1',
                'PORT': '3306',
                'NAME': 'database_name',
                'USER': 'username',
                'PASSWORD': 'password',
                        }
                }           

Kindly help me. I don't know why my models/tables are not available on Google App engine. Thanks in advance!

You said you followed the steps. When you made and ran your migrations, did you have the Cloud SQL Proxy running? If it wasn't running or was not configured properly, that would explain why your migrations ran fine in your local database but were not applied in the Cloud database.

  1. Drop your database from Google sql console.
  2. Remove all your migrations and again create migration python manage.py makemigrations
  3. python manage.py migrate
  4. deploy your application and test again.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM