通过已部署的 App Engine 应用程序连接到云 SQL(不同区域)
Connecting to Cloud SQL through deployed App Engine app (Different regions)
我目前有一个已部署的 App Engine 应用程序(通过 Cloud SQL 授权)并且与我的 Cloud SQL 实例位于同一项目中。我正在使用 Python & Flask 并按照原始 Google 代码连接到云 SQL。
if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'):
try:
return MySQLdb.connect(
unix_socket='/cloudsql/{}:{}'.format(
CLOUDSQL_PROJECT,
CLOUDSQL_INSTANCE),
user='root',
db='my_db'
)
except:
stacktrace = traceback.format_exc()
logging.error("%s", stacktrace)
return False
else:
try:
return MySQLdb.connect(host='xxx.xxx.xx.xx',
user='root',
db='my_db',
passwd='password',
port=3306)
except:
return False
当 运行 在本地开发服务器上时,一切都很好,但自部署以来我无法连接到云 SQL。这是我得到的错误:
OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 38")
我已经多次检查 CLOUDSQL_PROJECT 和 CLOUDSQL_INSTANCE 这两个变量是否配置正确。
我也尝试过不指定数据库连接,with/without 指定密码等等。
一个潜在的问题可能是我们的 App Engine 实例位于 us-central(待更改)而我们的 Cloud SQL 位于 euro-west。我想知道这是否可能是问题的根源,因为我没有看到任何其他可能导致此错误的原因,或者我在其他地方犯了错误。
感谢您的宝贵时间和建议。
亚历克斯
根据 https://cloud.google.com/sql/docs/app-engine-connect,GAE 应用程序需要与 Cloud SQL 实例位于同一区域。
我目前有一个已部署的 App Engine 应用程序(通过 Cloud SQL 授权)并且与我的 Cloud SQL 实例位于同一项目中。我正在使用 Python & Flask 并按照原始 Google 代码连接到云 SQL。
if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'):
try:
return MySQLdb.connect(
unix_socket='/cloudsql/{}:{}'.format(
CLOUDSQL_PROJECT,
CLOUDSQL_INSTANCE),
user='root',
db='my_db'
)
except:
stacktrace = traceback.format_exc()
logging.error("%s", stacktrace)
return False
else:
try:
return MySQLdb.connect(host='xxx.xxx.xx.xx',
user='root',
db='my_db',
passwd='password',
port=3306)
except:
return False
当 运行 在本地开发服务器上时,一切都很好,但自部署以来我无法连接到云 SQL。这是我得到的错误:
OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 38")
我已经多次检查 CLOUDSQL_PROJECT 和 CLOUDSQL_INSTANCE 这两个变量是否配置正确。 我也尝试过不指定数据库连接,with/without 指定密码等等。 一个潜在的问题可能是我们的 App Engine 实例位于 us-central(待更改)而我们的 Cloud SQL 位于 euro-west。我想知道这是否可能是问题的根源,因为我没有看到任何其他可能导致此错误的原因,或者我在其他地方犯了错误。
感谢您的宝贵时间和建议。
亚历克斯
根据 https://cloud.google.com/sql/docs/app-engine-connect,GAE 应用程序需要与 Cloud SQL 实例位于同一区域。