python - 无法在本地运行的 Flask 应用程序中连接到 Google SQL
问题描述
我Python3
正在Google App Engine Flexible
运行gunicorn
and Flask
。部署我的应用程序会导致连接成功,但是我似乎无法在本地连接,并且考虑到推送新版本的速度/繁琐程度,我真的很希望能够从本地版本开始工作。
这是我运行时的错误:gunicorn main:application
Traceback (most recent call last):
File "/Users/XXXX/Desktop/Flexible/pymysql/connections.py", line
571, in connect
sock.connect(self.unix_socket)
FileNotFoundError: [Errno 2] No such file or directory
During handling of the above exception, another exception occurred:
<stacktrace within pymysql/connection.py>
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003,
"Can't connect to MySQL server on 'localhost' ([Errno 2] No such file
or directory)") (Background on this error at:
http://sqlalche.me/e/e3q8)
[2019-02-18 09:40:41 +1100] [93536] [INFO] Worker exiting (pid: 93536)
[2019-02-18 09:40:41 +1100] [93533] [INFO] Shutting down: Master
[2019-02-18 09:40:41 +1100] [93533] [INFO] Reason: Worker failed to boot.
我已经将我的 Google SQL 设置为拥有一个公共 IP,并将它连接到我自己的 IP 地址,但这似乎并没有改变任何东西。
这是我的代码:
engine = create_engine('mysql+pymysql://<USER>:<PASSWORD>@/<DBNAME>?unix_socket=/cloudsql/<INSTANCE_NAME>')
connection = engine.connect()
任何帮助都会非常感谢:)
解决方案
您包含的回溯使您看起来像是在尝试连接到本地 Unix 套接字。仅当您的数据库与应用程序代码在同一台机器上运行时,这才有效。
相反,您需要通过公共 IP 地址进行连接,或者使用 Cloud SQL 代理(这可能是最简单的方法)。
请参阅:https ://cloud.google.com/python/getting-started/using-cloud-sql
推荐阅读
- python - 如果 Python 列表中存在文件,如何在不重新建立 SSH 连接的情况下将文件上传到远程服务器?
- google-chrome-extension - 为什么我需要 Chrome 扩展匹配权限?
- django - 尽管我的字符串在范围内,但类型字符变量(x)的值太长
- mysql - 如何更改查询结果的时区
- reactjs - 我可以向 React Native 导航按钮添加动画吗?
- python - 删除 view.py 中的个性化类 - Django
- flutter - flutter web 在启动时崩溃,日志中没有错误
- android - 小安卓通知
- reactjs - 使用 React Router 更新状态
- webpack - 如何使用可读的包构建 Nextjs?