无法通过套接字\'/ cloudsql / my_project:us-central1:my_instance \'连接到本地MySQL服务器

时间:2019-08-10 08:29:25

标签: python google-cloud-platform google-cloud-sql

这是我第一次在Google云上进行部署,并且正在从GitHub克隆存储库。

通过创建目录,克隆GitHub存储库,创建实例和MySQL数据库,一切似乎都可以。安装要求也成功。我创建了一个云SQL第二代数据库,并为其设置了用户和密码。我什至启用了云SQL API。

当我使用“ sudo python3 manage.py runserver 0.0.0.0:80”运行服务器时,出现以下错误消息:

django.db.utils.OperationalError: (2002, 'Can\'t connect to local MySQL server through socket \'/cloudsql/my_project:us-central1:my_instance\' (2 "No such file or directory")')

我尝试使用sudo python3 manage.py runserver运行服务器,但仍然出现相同的错误。

我已经花了几个小时尝试解决此错误,但无济于事。

这是一个Django应用,setings.py DATABASES如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '/cloudsql/my_instance:us-central1:my_project_name',
        'USER': 'root',
        'PASSWORD': '**password**',
        'NAME': 'db_name',
                     }
             }

我尝试了没有密码的设置,并且遇到了相同的错误。

我尝试了所有我能想到的,但没有成功。 拜托,我需要帮助。我被困在这一个。

2 个答案:

答案 0 :(得分:0)

您要在哪里运行该应用程序? /cloudsql套接字仅自动提供给App Engine runtimes-如果要在本地运行,则需要使用Cloud SQL Proxy to create a socket locally

答案 1 :(得分:0)

我遇到了同样的问题。

我使用 Cloud SQL 代理和 'HOST':'127.0.0.1' 并且它工作正常:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',
        'USER': 'root',
        'PASSWORD': '**password**',
        'NAME': 'db_name',
               }
             }

这里是手册:

https://cloud.google.com/python/django/appengine#mysql-client https://cloud.google.com/sql/docs/mysql/quickstart-proxy-test