【问题标题】:Problem App Engine app to connect to MySQL in CloudSQL问题 App Engine 应用程序连接到 CloudSQL 中的 MySQL
【发布时间】:2019-02-25 23:04:57
【问题描述】:

我已经配置了 SQL 第二代。实例和 App Engine 应用程序 (Python 2.7) 在一个项目中。我根据that page做了必要的设置。

app.yaml

runtime: python27
api_version: 1
threadsafe: true
env_variables:
    CLOUDSQL_CONNECTION_NAME: coral-heuristic-215610:us-central1:db-basic-1
    CLOUDSQL_USER: root
    CLOUDSQL_PASSWORD: xxxxxxxxx     
beta_settings:
    cloud_sql_instances: coral-heuristic-215610:us-central1:db-basic-1
libraries:
- name: lxml
  version: latest
- name: MySQLdb
  version: latest
handlers:   
- url: /main
  script: main.app

现在,当我尝试从应用程序连接(在 Cloud Shell 内)时,出现错误:

OperationalError: (2002, 'Can\'t connect to local MySQL server through socket \'/var/run/mysqld/mysqld.sock\' (2 "No such file or directory")')

直接连接有效:

$ gcloud sql connect db-basic-1 --user=root

成功了……

MySQL [correction_dict]> SHOW PROCESSLIST;                                                                                                     
+--------+------+----------------------+-----------------+---------+------+----------+------------------+
| Id     | User | Host                 | db              | Command | Time | State    | Info             |
+--------+------+----------------------+-----------------+---------+------+----------+------------------+
|      9 | root | localhost            | NULL            | Sleep   |    4 |          | NULL             |
|     10 | root | localhost            | NULL            | Sleep   |    4 |          | NULL             |
| 112306 | root | 35.204.173.246:59210 | correction_dict | Query   |    0 | starting | SHOW PROCESSLIST |
| 112357 | root | localhost            | NULL            | Sleep   |    4 |          | NULL             |
| 112368 | root | localhost            | NULL            | Sleep   |    0 |          | NULL             |
+--------+------+----------------------+-----------------+---------+------+----------+------------------+

我已授权 IP 连接到 Cloud SQL 实例

任何提示,帮助?

【问题讨论】:

    标签: python-2.7 google-cloud-platform mysql-python google-cloud-sql mysql-connector-python


    【解决方案1】:

    Google AppEngine Standard 在/cloudsql/[INSTANCE_CONNECTION_NAME] 提供了一个 unix 套接字,可自动将您连接到您的 CloudSQL 实例。您需要做的就是在该地址连接到它。对于 MySQLDb 库,如下所示:

        db = MySQLdb.connect(
            unix_socket=cloudsql_unix_socket,
            user=CLOUDSQL_USER,
            passwd=CLOUDSQL_PASSWORD)
    

    (如果您运行的是 AppEngine Flexible,则连接方式不同,可以在 here 找到)

    【讨论】:

      猜你喜欢
      • 2018-09-04
      • 2017-04-18
      • 1970-01-01
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 2020-09-14
      • 2020-05-21
      • 1970-01-01
      相关资源
      最近更新 更多