我在Python3
和Google App Engine Flexible
和gunicorn
中运行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()
任何帮助都将非常感谢:)
答案 0 :(得分:1)
所包含的回溯使您看起来好像试图连接到本地Unix套接字。仅当您的数据库与应用程序代码在同一台计算机上运行时,这才起作用。
相反,您将需要通过公用IP地址进行连接,或者使用Cloud SQL代理(这可能是最简单的方法)。
请参阅:https://cloud.google.com/python/getting-started/using-cloud-sql
答案 1 :(得分:0)
由于您的数据库托管在Cloud SQL上,因此在本地计算机上运行应用程序时,设置Cloud SQL代理是一种访问数据库的简便方法。
此链接为您提供了有关Cloud SQL的一些详细信息,并在开始时提供了有关代理的特定信息:https://cloud.google.com/python/getting-started/using-cloud-sql
以下是用于本地测试的设置和安装的有用快速入门: https://cloud.google.com/sql/docs/mysql/quickstart-proxy-test
请确保您的代理正在运行并在本地进行整个测试时一直在监听,否则您将收到“连接被拒绝”错误。
希望这会有所帮助,让我知道是否全部成功!
欢呼