node.js - 从 Cloud Functions 连接时的 mysql ETIMEDOUT
问题描述
以下代码是使用 Firebase Cloud Functions 发出 mysql 查询。
该代码在本地计算机上运行时有效。( $ firebase serve
)
但是在谷歌云平台上运行时,出现错误ETIMEDOUT
。( $ firebase deploy
)
我想让你告诉我可能的原因。
注意
- Cloud Functions 运行时配置是Node.js 8
,我的本地环境也是 Node.js 8.0.0
代码:
const mysql = require('mysql')
const pool = mysql.createPool({
host: '10.20.30.40',
user: 'user',
password: 'pass',
database: 'db',
connectTimeout : 10000
})
pool.query('SELECT * FROM table', (error, rows, fields) => {
if (error) {
console.error(error)
throw error
}
console.log('The solution is: ', rows)
pool.end()
})
错误:
{ Error: connect ETIMEDOUT
at PoolConnection.Connection._handleConnectTimeout (/srv/node_modules/mysql/lib/Connection.js:411:13)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:106:13)
at Socket.emit (events.js:208:7)
at Socket._onTimeout (net.js:420:8)
at ontimeout (timers.js:482:11)
at tryOnTimeout (timers.js:317:5)
at Timer.listOnTimeout (timers.js:277:5)
--------------------
at Protocol._enqueue (/srv/node_modules/mysql/lib/protocol/Protocol.js:144:48)
at Protocol.handshake (/srv/node_modules/mysql/lib/protocol/Protocol.js:51:23)
at PoolConnection.connect (/srv/node_modules/mysql/lib/Connection.js:118:18)
at Pool.getConnection (/srv/node_modules/mysql/lib/Pool.js:48:16)
at Pool.query (/srv/node_modules/mysql/lib/Pool.js:202:8)
at Promise (/srv/lib/modules/myCellar.js:32:14)
at new Promise (<anonymous>)
at Object.exports.get.uid [as get] (/srv/lib/modules/myCellar.js:31:12)
at Object.<anonymous> (/srv/lib/index.js:14:36)
at Generator.next (<anonymous>)
errorno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
fatal: true }
解决方案
推荐阅读
- java - 检查您的模块类路径是否存在缺失或冲突的依赖项。无法访问 java.lang.Object
- javascript - ref 在反应式数组对象中不再反应式
- mariadb - brew install mariadb 失败,因为系统无法 chown for auth_pam_tool
- reactjs - 将 Photo Sphere Viewer 与 React 一起使用
- excel - 如何为每次另一列的值更改时重置的行提供数字?
- oauth - Autodesk-forge 查看器:访问令牌
- java - 如何使用命令提示符运行包含 python 文件的 java jar
- java - ClimaCell API json 转换为 POJO
- c++ - C++无效使用非静态成员函数?
- python - 为特定日期创建具有给定动态公司名称的数据框