【问题标题】:SQLAlchemy Python with Flask on AppEngine: OperationalError: (_mysql_exceptions.OperationalError) (2004, "Can't create TCP/IP socket (-1)")在 AppEngine 上使用 Flask 的 SQLAlchemy Python:OperationalError:(_mysql_exceptions.OperationalError)(2004,“无法创建 TCP/IP 套接字(-1)”)
【发布时间】:2015-07-06 16:29:10
【问题描述】:

我在 Google AppEngine 上使用带有 Flask 的应用程序,我使用此常量 SQLALCHEMY_DATABASE_URI = 'mysql://user:pass@ip_address/database' 配置了数据库。但在生产机器上显示此错误:

OperationalError: (_mysql_exceptions.OperationalError) (2004, "Can't create TCP/IP socket (-1)") 

我使用 requirements.txt 正确配置了 lib,并在 app.yaml 文件中添加了 MySQLdb。

【问题讨论】:

    标签: python mysql sockets google-app-engine sqlalchemy


    【解决方案1】:

    在生产环境中,您应该为 SQLALCHEMY_DATABASE_URI 使用这种语法

    mysql+mysqldb://root@/<DATABASE_NAME>?unix_socket=/cloudsql/<APPENGINE_PROJECT>:<SQL_INSTANCE_ID>
    

    【讨论】:

    • 是的,这是正确的答案。谢谢,我只是被这个帮助了!这很棘手,因为该语法在本地 IIRC 不起作用
    【解决方案2】:

    您是否启用了结算功能?对套接字的第一个限制 -

    虽然 App Engine 支持套接字,但存在一定的限制 以及使用套接字时需要注意的行为:

    套接字仅适用于付费应用。

    【讨论】:

    • 我开启了计费,但我会尝试使用unix_socket连接,我看到很多人有这个问题。谢谢蒂姆霍夫曼。
    • Sockets 确实只对付费应用可用,但是这个错误只是因为 SQLALCHEMY_DATABASE_URI 的错误配置
    猜你喜欢
    • 2019-01-10
    • 2019-03-14
    • 2020-11-12
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    相关资源
    最近更新 更多