如何将Node App重新连接到新的Google Cloud SQL数据库?

gcp项目中有一个react / node应用程序的开发版本。该项目是由其他人创建的,因此我的理解有限。我需要准备好该应用才能投入生产。

我获取了代码并将该应用程序复制到一个新项目中,该项目将用于生产。在server.js文件中,我更改了主机,密码和数据库,以匹配我创建的新项目中的数据库。 当do npm在客户端内部运行构建并执行gcloud app部署api / app.yaml和client / app.yaml时,尽管指定了新的主机,密码和数据库,但部署的应用仍会引用开发应用中的原始数据库。

我猜测问题是我最初是使用dev数据库选项进行部署的,当我切换到prod数据库选项时,它无法连接并恢复为先前的连接。

如果这是真的,我如何查看导致此连接失败的原因?我需要在数据库中设置其他设置以使其连接就绪吗?我所做的就是在一个新项目中创建一个同名数据库。

var connection = mysql.createConnection({
  host: 'xx.xxx.xxx.xxx',user: 'root',password: 'xxx',database: 'xxx',multipleStatements: true
});

connection.connect(function(err) {
    if (err) throw err;
});

module.exports = connection;


suzhuang 回答:如何将Node App重新连接到新的Google Cloud SQL数据库?

第一个潜在的原因是,取决于您对Cloud SQL实例的连接进行身份验证的方式,您可能必须沿着新的JSON密钥创建一个新的服务帐户,App Engine会使用该帐户来进行连接。如果App Engine拥有到旧数据库的那些凭据,则可能是根本原因之一。 Here is how to configure this.

第二个是如果将新凭据设置为环境变量,则可能不会使用新凭据更新“ app.yaml”文件。 Here is an example使用这种配置。请注意,此示例来自this complete tutorial,它涉及从运行Node.js的App Engine连接到Cloud SQL。我建议您完整阅读示例文件,并与您当前的代码/配置进行比较,以发现任何差异。

最后,查看“ server.js”文件,没有提到socketPath(位于/ cloudsql / INSTANCE_CONNECTION_NAME)或TCP IP和端口。 Here is an example与已配置的文件(请确保单击Node.js选项卡)。请注意,App Engine标准环境仅使用Unix域套接字,而灵活环境也将允许通过TCP连接。

本文链接:https://www.f2er.com/3162983.html

大家都在问