You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP云函数连接Cloud SQL报错:模块缺失及路由不可达

解决GCP云函数连接Cloud SQL MySQL的两个问题

1. 处理ModuleNotFoundError: No module named 'google.cloud.sql'

  • 本地调试检查:如果是本地测试云函数,先确认已激活虚拟环境,执行pip install -r requirements.txt安装所有依赖,再通过pip list | grep cloud-sql-python-connector验证包是否安装成功、版本是否为1.2.0。
  • 部署环节检查:GCP云函数部署时会自动读取requirements.txt安装依赖,但如果部署命令未指向正确目录,或依赖安装过程中因网络问题失败,都会导致包缺失。查看云函数的构建日志,确认是否有依赖安装报错;若有,尝试升级cloud-sql-python-connector到较新版本(如1.13.0)后重新部署。
  • 运行时兼容性:确认云函数选择的Python运行时版本与依赖兼容,cloud-sql-python-connector 1.2.0支持Python 3.7~3.10,避免使用不匹配的运行时。

2. 解决OSError: [Errno 113] No route to host

  • 确认私有IP配置:Cloud SQL实例必须启用私有IP,且该IP所属VPC与云函数配置的VPC完全一致。
  • 防火墙规则验证:在VPC中配置防火墙规则,允许云函数所在子网的IP段访问Cloud SQL实例的3306端口。规则需设置:来源为云函数子网IP范围,目标为Cloud SQL实例的标签或私有IP范围,协议TCP,端口3306。
  • 云函数VPC配置:确保云函数已连接到目标VPC的指定子网,该子网需与Cloud SQL的私有IP子网处于同一VPC(或已完成VPC peering连通)。
  • 实例状态与权限:确认Cloud SQL实例处于运行状态,且云函数的服务账号已被授予Cloud SQL Client角色,并添加到Cloud SQL实例的IAM权限列表中。

改用mysql.connector的连接实现

如果倾向使用mysql.connector,可以按以下方式修改代码:

导入语句

import requests
import os

from google.cloud.sql.connector import Connector, IPTypes
import mysql.connector

连接函数

def _get_connection(db='bot_config'):
    ip_type = IPTypes.PRIVATE
    connector = Connector(ip_type)

    # 替换为你的Cloud SQL实例连接名(格式:项目ID:区域:实例名)
    conn = connector.connect(
        'x:y:z',
        "mysql-connector",
        user='user',
        password='password',
        db=db,
    )
    return conn

依赖调整

如果不再使用PyMySQL,可以从requirements.txt中移除PyMySQL==1.0.2,保留mysql-connector-python==8.0.32和cloud-sql-python-connector==1.2.0即可。

内容的提问来源于stack exchange,提问作者Maanav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 04:37:29