I am new to all of this so bear with me ! I created a Flask app with python and everything is working fine locally. I even connected to Google Cloud SQL mySQL database in my local environment. However, when I deploy to GCloud App Engine, I get an error saying I cannot connect to MySQL server.
Steps I have taken : Created MySQL instance, created database, created tables Gave Default App Engine service account Cloud SQL Client permissions Tried to connect SQLAlchemy to the database, but the connection is refused with code 2002 or 2003. Here is the error log I have received :
insertId: "612bd61a000008b1eb289e07"
labels: {1}
logName: "projects/edge-321919/logs/stderr"
receiveTimestamp: "2021-08-29T18:46:50.215413245Z"
resource: {2}
severity: "ERROR"
textPayload: "Traceback (most recent call last):
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/flask/app.py", line 2070, in wsgi_app
response = self.full_dispatch_request()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/flask/app.py", line 1515, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/flask/app.py", line 1513, in full_dispatch_request
rv = self.dispatch_request()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/flask/app.py", line 1499, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
File "/srv/main.py", line 143, in home
for item in Blog_Post.query.order_by(Blog_Post.id.desc()).limit(NUMBER_RESULTS):
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 2840, in __iter__
return self._iter().__iter__()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 2850, in _iter
execution_options={"_sa_orm_load_options": self.load_options},
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 1688, in execute
conn = self._connection_for_bind(bind)
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 1530, in _connection_for_bind
engine, execution_options
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind
conn = bind.connect()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 3166, in connect
return self._connection_cls(self, close_with_result=close_with_result)
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 96, in __init__
else engine.raw_connection()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection
return self._wrap_pool_connect(self.pool.connect, _connection)
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 3216, in _wrap_pool_connect
e, dialect, self
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 2070, in _handle_dbapi_exception_noconnection
sqlalchemy_exception, with_traceback=exc_info[2], from_=e
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
raise exception
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect
return fn()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 307, in connect
return _ConnectionFairy._checkout(self)
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout
fairy = _ConnectionRecord.checkout(pool)
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 425, in checkout
rec = pool._do_get()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/pool/impl.py", line 146, in _do_get
self._dec_overflow()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/util/langhelpers.py", line 72, in __exit__
with_traceback=exc_tb,
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
raise exception
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/pool/impl.py", line 143, in _do_get
return self._create_connection()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 253, in _create_connection
return _ConnectionRecord(self)
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 368, in __init__
self.__connect()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 611, in __connect
pool.logger.debug("Error on connect(): %s", e)
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/util/langhelpers.py", line 72, in __exit__
with_traceback=exc_tb,
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
raise exception
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 605, in __connect
connection = pool._invoke_creator(self)
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/engine/create.py", line 578, in connect
return dialect.connect(*cargs, **cparams)
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 584, in connect
return self.dbapi.connect(*cargs, **cparams)
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/MySQLdb/__init__.py", line 130, in Connect
return Connection(*args, **kwargs)
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/MySQLdb/connections.py", line 185, in __init__
super().__init__(*args, **kwargs2)
sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to local MySQL server through socket '/cloudsql/edge-321919:northamerica-northeast1:edge-2021-test' (111)")"
timestamp: "2021-08-29T18:46:50.002225Z"
I keep getting this error even though I tried many many things to connect to the database. Currently, I am just connecting using SQLAlchemy_URI, but I also tried connect_engine and got the same errors.
I am getting pretty hopeless so any help would be very much appreciated !
If you check your logs from AppEngine, you should see some additional information that might narrow down what's going wrong.
In general, it's best to double check the Connecting from App Engine Standard page, including the following:
Cloud SQL Client
role