appengine和cloud sql连接错误

kmynzznz  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(364)

我使用的是来自googlecloud的appengine和cloudsql。它们都在同一个项目中,这应该足以连接到sql。
如果您的appengine应用程序与您的cloudsql示例位于同一个项目中,您可以跳过此部分,转到设置本地环境。否则,继续下一步。
如果我在mac上本地启动node.js,它就可以很容易地连接到云sql,因为我的ip地址被列入了白名单。
一旦我把它部署到appengine,它就不工作了,因为它无法连接到db。我正在使用云sql的公共ip地址。
我已经阅读了很多教程,也阅读了googlecloud提供的文档。我可以看出 socketPath .
但我不想用knex。我想使用标准的mysql。
我一直在尝试以下方法:

var db_config = {
  host: 'PUBLIC IP',
  user: 'root',
  password: 'PASSWORD!',
  database: 'DB_NAME',
  socketPath: '/cloudsql/CONNECTION_NAME'
};

错误:

error when connecting to db: { Error: connect ENOENT /cloudsql/CONNECTION_NAME-209415:europe-west1:DB_NAME
    at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1174:14)
    --------------------
    at Protocol._enqueue (/Users/root/API/Node-API/node_modules/mysql/lib/protocol/Protocol.js:145:48)
    at Protocol.handshake (/Users/root/API/Node-API/node_modules/mysql/lib/protocol/Protocol.js:52:23)
    at Connection.connect (/Users/root/API/Node-API/node_modules/mysql/lib/Connection.js:130:18)
    at handleDisconnect (/Users/root/API/Node-API/src/App.ts:44:14)
    at Object.<anonymous> (/Users/root/API/Node-API/src/App.ts:60:1)
    at Module._compile (internal/modules/cjs/loader.js:654:30)
    at Module.m._compile (/Users/root/API/Node-API/node_modules/ts-node/src/index.ts:435:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:665:10)
    at Object.require.extensions.(anonymous function) [as .ts] (/Users/root/API/Node-API/node_modules/ts-node/src/index.ts:438:12)
    at Module.load (internal/modules/cjs/loader.js:566:32)
  errno: 'ENOENT',
  code: 'ENOENT',
  syscall: 'connect',
  address: '/cloudsql/CONNECTION_NAME-209415:europe-west1:DB_NAME',
  fatal: true }

有什么建议,怎么解决?如果我从db\u配置中删除socketpath,那么它就可以在本地工作——但在部署时就不行了。

pcww981p

pcww981p1#

好的,似乎是在应用localhost和socketpath时导致的错误。一切正常,没有 Knex ,如下所示 db_config 为了 mysql .

db_config = {
     user: 'root',
     password: 'PASSWORD!',
     database: 'DB_NAME',
     socketPath: '/cloudsql/CONNECTION_NAME'
};

最后,记住将cloud\u sql\u示例添加到 app.yaml ```
beta_settings:
cloud_sql_instances: CONNECTION_NAME

相关问题