我在Node JS应用程序中使用Google App Engine和Cloud SQL(我的SQL第二代实例),遇到了麻烦。
我使用云代理在本地连接正常,但是一旦部署,它就会失败。
我正在使用Sequelize连接到云SQL。
我确实有正确的密码/用户名/实例连接名。 我已启用API,否则我将无法通过代理进行连接。
在我的“ app.yaml”中,我确实具有正确的“ beta_settings”标记以及正确的“ cloud_sql_instances”值。
来自Cloud SQL的消息:
`{insertId: "s=7560d77466cb46cebc3933acc1c41082;i=1a5ff5;b=30867f100f0d483ea84a5718c3948aed;m=886b8bfcbb;t=578fd8d7ad54f;x=a821eba2c35efe29-0@a1"
logName: "projects/[CORRECT PROJECT]/logs/cloudsql.googleapis.com%2Fmysql.err"
receiveTimestamp: "2018-10-24T18:21:25.190291090Z"
resource: {
labels: {
database_id: "[CORRECT DB ID]"
project_id: "[CORRECT PROJECT ID]"
region: "us-central"
}
type: "cloudsql_database"
}
severity: "ERROR"
textPayload: "2018-10-24T18:21:19.249532Z 53509 [Note] Access denied for user 'root'@'cloudsqlproxy~66.85.23.1' (using password: NO)"
timestamp: "2018-10-24T18:21:19.249743Z" }`
消息来自APP引擎(Express,Sequelize):
`Error: connect ECONNREFUSED 127.0.0.1:3306 at TCPConnectWrap.afterConnect [as oncomplete]`
似乎类似的问题已被问过无数次,并且我已经阅读了10多个stackoverflow问题和答案,但我仍然没有正确的答案。
我可以寻求帮助吗?
谢谢。
答案 0 :(得分:0)
我知道这很旧-但是我的NodeJS应用程序连接到CloudSQL Postgres时遇到了同样的问题。稍微挖掘一下AppEngine实例最终发现,尽管文档显示主机为127.0.0.1,但它实际上正在运行CloudSQL代理docker映像-因此,尽管实例本身为127.0.0.1,主机名实际上必须是来自应用程序容器的“ cloudsql”。
尝试连接到 cloudsql:3306 ,并查看其是否有效!