【问题标题】:Google App Engine, Django: Tables are not made in Google cloud SQL after deploymentGoogle App Engine、Django:部署后未在 Google Cloud SQL 中制作表格
【发布时间】:2017-09-21 17:44:32
【问题描述】:

我正在谷歌应用引擎上部署一个带有 django-backend 的网站。我关注了他们的tutorial。我已经使用 MySQL 在本地服务器上运行了该网站,并且运行良好。 在 Google App Engine 上部署它时出现以下错误:

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

这是我的 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/.*$

这是我的 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',
                        }
                }           

请帮助我。我不知道为什么我的模型/表格在 Google App 引擎上不可用。提前致谢!

【问题讨论】:

    标签: python mysql django google-app-engine google-cloud-sql


    【解决方案1】:

    您说您按照步骤操作。当您进行并运行迁移时,您是否运行了 Cloud SQL 代理?如果它没有运行或配置不正确,那就可以解释为什么您的迁移在本地数据库中运行良好,但没有在云数据库中应用。

    【讨论】:

    • cloud_sql_proxy.exe -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306 "此步骤会建立从本地计算机到 Cloud SQL 实例的连接以进行本地测试。在本地测试应用程序的整个过程中保持 Cloud SQL 代理运行。"它说只有在必须在本地测试应用程序时才需要使用 Cloud SQL 代理
    • 谢谢!你是对的!谷歌需要使其文档更清晰......
    【解决方案2】:
    1. 从 Google sql 控制台删除您的数据库。
    2. 删除所有迁移并再次创建迁移python manage.py makemigrations
    3. python manage.py migrate
    4. 部署您的应用程序并再次测试。

    【讨论】:

    • 我按照你说的做了..但我仍然遇到同样的错误..当我进行迁移和迁移时,它会在我的本地数据库而不是谷歌云数据库上创建新的迁移,当我使用gcloud app deploy 部署网站它正在部署与以前相同的东西..
    猜你喜欢
    • 2014-08-03
    • 2021-09-25
    • 2014-04-08
    • 2020-06-02
    • 2020-11-22
    • 2017-12-24
    • 1970-01-01
    • 2013-03-11
    • 2016-12-30
    相关资源
    最近更新 更多