【问题标题】:OperationalError: (2004, "Can't create TCP/IP socket (13)")OperationalError:(2004,“无法创建 TCP/IP 套接字 (13)”)
【发布时间】:2019-01-10 01:45:07
【问题描述】:

第一次连接烧瓶项目时,App Engine 出现以下错误: OperationalError: (2004, "Can't create TCP/IP socket (13)")

连接由以下代码完成: db = MySQLdb.connect(CLOUDSQL_HOST, CLOUDSQL_USER, CLOUDSQL_PASSWORD, db_instance)

我不明白为什么我的本地机器上的代码使用 dev_appserver.py 可以正常工作,但在云上却不能工作。

感谢您的帮助。

【问题讨论】:

    标签: google-app-engine flask google-cloud-platform mysql-python


    【解决方案1】:

    在 App Engine 上运行时,您必须使用 App Engine 原生 UNIX 套接字连接到您的 Cloud SQL 实例。所以,你可以使用类似this example:

    if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'):
            cloudsql_unix_socket = os.path.join(
                '/cloudsql', CLOUDSQL_CONNECTION_NAME)
    
            db = MySQLdb.connect(
                unix_socket=cloudsql_unix_socket,
                user=CLOUDSQL_USER,
                passwd=CLOUDSQL_PASSWORD)
    else:
        db = MySQLdb.connect(host='127.0.0.1', user=CLOUDSQL_USER, passwd=CLOUDSQL_PASSWORD)
    

    您可以从控制台或使用命令 gcloud sql instances describe YOUR_INSTANCE 获取您的 CLOUDSQL_CONNECTION_NAME 字段。它会是这样的: connectionName: YOUR-PROJECT:REGION-OF-THE-INSTANCE-INSTANCE-NAME

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-14
      • 2012-03-06
      • 1970-01-01
      • 2019-02-07
      • 1970-01-01
      • 2014-05-10
      • 2013-12-02
      • 2016-07-30
      相关资源
      最近更新 更多