当试图连接到另一个项目中的云sql实例时,我得到了上述错误。这会在日志中抛出以下错误:
ENOENT /cloudsql/${process.env.INSTANCE_CONNECTION_NAME}/.s.PGSQL.5432
Cloud Run中的连接已经建立并指向另一个项目中的实例:
云运行连接
此外,用于此部署的服务帐户在其自己的项目和SQL实例所在的项目中都具有Cloud SQL Client权限。
最后,环境变量也在云运行中设置,并具有正确的实例连接名称。
我最初试图让这个工作在一个现有的部署没有运气,然后也部署它从头开始,但同样的错误不断发生。
应用程序是基于node.js的,序列化为ORM。
任何帮助都将非常感激。
我已经设法解决了这个问题,问题是在config.js与连接字符串。
最初的连接字符串是:
username: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
host: '/cloudsql/${process.env.INSTANCE_CONNECTION_NAME}',
dialect: 'postgres',
dialectOptions: {
socketPath: '/cloudsql/${process.env.INSTANCE_CONNECTION_NAME}'
}
Cloud Run似乎无法读取INSTANCE_CONNECTION_NAME。我把它改成:
username: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
host: process.env.INSTANCE_CONNECTION_NAME,
dialect: 'postgres',
dialectOptions: {
socketPath: process.env.INSTANCE_CONNECTION_NAME
}
并设置INSTANCE_CONNECTION_NAME以包含/cloudsql/部分,瞧,它工作了。