我在 Node.js 应用程序中尝试使用 Sequelize 连接到 Google Cloud SQL 实例时遇到问题。之前连接工作正常,但现在我收到一条错误消息。这是我用来建立连接的函数:
async function loadSequelize() {
//This connection is for Google Cloud ONLY (IF You want to connect locally please change the connection config).
const sequelize = new Sequelize(process.env.DEFAULT_DATABASE_NAME, process.env.DATABASE_USER, process.env.DATABASE_PASSWORD, {
dialect: 'postgres',
logging: false,
// e.g. host: '/cloudsql/my-awesome-project:us-central1:my-cloud-sql-instance'
host: process.env.INSTANCE_UNIX_SOCKET,
pool: {
max: 2,
min: 0,
acquire: 10000,
idle: 0
},
dialectOptions: {
// e.g. socketPath: '/cloudsql/my-awesome-project:us-central1:my-cloud-sql-instance'
// same as host string above
socketPath: process.env.INSTANCE_UNIX_SOCKET
},
logging: false,
operatorsAliases: false
});
await sequelize.authenticate();
return sequelize;
}
但是,在运行应用程序时,我遇到以下错误:
ConnectionError [SequelizeConnectionError]: connect ENOENT /cloudsql/my-awesome-project:us-central1:my-cloud-sql-instance.s.PGSQL.5432
我没有对连接配置进行任何更改,昨天工作正常。我还尝试在本地运行该应用程序,但问题仍然存在。任何有关可能导致此问题的原因或如何解决此问题的见解将不胜感激。谢谢!
无论出于何种原因,您的 Unix 套接字路径看起来都是错误的。
应该是:
/cloudsql/my-awesome-project:us-central1:my-cloud-sql-instance/.s.PGSQL.5432
.s.PGSQL.5432
套接字位于以您的实例连接名称命名的子目录中。不过,我不知道 sequalize 是否希望您添加完整路径。