我在 Paperspace Deployment Docker 容器中有一个 flask 应用程序。它连接到 Google Cloud SQL (MySQL)。
以下是 YALM 参数中的变量:
env:
- name: CLOUD_SQL_CONNECTION_NAME
value: xx.xx.xx.xx
- name: CLOUD_SQL_USERNAME
value: my_user
- name: CLOUD_SQL_PASSWORD
value: xxxxx
- name: CLOUD_SQL_DATABASE_NAME
value: db_01
以及相关代码:
HOST =os.environ.get('CLOUD_SQL_CONNECTION_NAME')
USER = os.environ.get('CLOUD_SQL_USERNAME')
PWD = os.environ.get('CLOUD_SQL_PASSWORD')
SQLDB = os.environ.get('CLOUD_SQL_DATABASE_NAME')
CHARSET = os.environ.get('CLOUD_SQL_CHARSET')
SQLALCHEMY_DATABASE_URI = ('mysql+pymysql://{user}:{password}@{connection_name}/{database}').format(user=USER, password=PWD,database=SQLDB, connection_name=HOST)
app.config['SQLALCHEMY_DATABASE_URI'] = SQLALCHEMY_DATABASE_URI
如果我在本地电脑上运行它,容器运行良好,但在 Paperspace 云中则不行。
即使我拥有 GCould SQL 授权 IP 中的 Paperspace 服务的 IP 地址,GCloud SQL 服务器也从不应答。
通过对服务端点 URL 进行 ping 操作,已获取 IP。
这是我从 Paperspace 部署服务器收到的错误。
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on '[CLOUD_SQL_CONNECTION_NAME(IP)]' (timed out)")
(Background on this error at: https://sqlalche.me/e/14/e3q8)
为什么 GCloud SQL 服务器始终没有响应?是否有任何端口或授权需要激活?