我创建了一个连接到 Google Cloud SQL 的小型 NodeJS REST API。使用 Google AppEngine 灵活的环境它可以工作,但是当我尝试使用标准环境时 Google Cloud SQL 连接被拒绝。
我尝试使用内部 IP 以及 socketPath 进行连接。
我创建了一个存储库来展示错误:https://github.com/cbullokles/appengine-error
根据文档,我希望在这两种情况下都能连接到 MySQL,但它没有按预期工作。这是一个未记录的限制吗?或者我没有正确阅读 AppEngine 文档。
最佳答案
通往connect to Cloud SQL instances from App Engine Standard的路正在使用 Unix 域套接字连接到提供 App Engine 标准环境的 Cloud SQL 实例。
如果您使用 Node.js mysql
以这种方式打包配置以在 App Engine 中运行:
const db = mysql.createConnection ({
socketPath: '/cloudsql/<PROJECT_NAME>:<REGION_NAME>:<INSTANCE_NAME>',
user: 'user',
password: '1234',
database: 'yourDatabase'
});
<PROJECT_ID>:<REGION>:<INSTANCE_ID>
是每个 Cloud SQL 实例的唯一字符串。它列在您实例的实例详细信息页面的实例连接名称下,或在connectionName
下使用 gcloud sql instances describe <INSTANCE_ID>
时命令。
此外,Node.js 的 App Engine 标准官方文档有一些 code samples使用 knex
进行连接图书馆。
关于mysql - 从 Google AppEngine Standard 连接到 Google Cloud SQL 实例时出错(使用 NodeJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55802932/