我正在尝试使用Sequelize和一个MySQL数据库通过ClearDB将一个nodejs SPA部署到Heroku。该应用程序在本地运行,在Heroku上成功构建,并在我从浏览器请求时崩溃,并出现以下错误:
2017-05-15T01:57:11.830234+00:00 app[web.1]: Unhandled rejection SequelizeConnectionError: Quit inactivity timeout
2017-05-15T01:57:11.830243+00:00 app[web.1]: at Quit._callback (/app/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:136:30)
2017-05-15T01:57:11.830244+00:00 app[web.1]: at Quit.Sequence.end (/app/node_modules/mysql/lib/protocol/sequences/Sequence.js:86:24)
2017-05-15T01:57:11.830245+00:00 app[web.1]: at /app/node_modules/mysql/lib/protocol/Protocol.js:399:18
2017-05-15T01:57:11.830246+00:00 app[web.1]: at Array.forEach (native)
2017-05-15T01:57:11.830246+00:00 app[web.1]: at /app/node_modules/mysql/lib/protocol/Protocol.js:398:13
2017-05-15T01:57:11.830247+00:00 app[web.1]: at _combinedTickCallback (internal/process/next_tick.js:73:7)
2017-05-15T01:57:11.830248+00:00 app[web.1]: at process._tickCallback (internal/process/next_tick.js:104:9)
2017-05-15T01:57:24.016935+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/" host=widg.herokuapp.com request_id=cc5ac3b0-c003-46df-af32-e80f46d56a0b fwd="69.140.81.157" dyno=web.1 connect=1ms service=30000ms status=503 bytes=0 protocol=http
2017-05-15T01:57:24.018979+00:00 app[web.1]: GET / - - ms - -
2017-05-15T01:57:24.324884+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=widg.herokuapp.com request_id=85abc16a-8ef9-4a07-81d4-1a6bf43a6579 fwd="69.140.81.157" dyno=web.1 connect=1ms service=33ms status=500 bytes=318 protocol=http
基于各种线程,我读到可能一直在处理同样的问题,我尝试在Sequelize中添加一些额外的池设置,并在我的sequelize index.js中添加以下内容
if (config.use_env_variable) {
var sequelize = new Sequelize(process.env[config.use_env_variable], {
dialect: 'mysql',
protocol: 'mysql',
pool: { idle: 120000, max: 5, min: 0},
logging: true //false
});
} else {
var sequelize = new Sequelize(config.database, config.username, config.password, config);
}
我的配置相关部分.json只是:
"production": {
"use_env_variable": "DATABASE_URL"
}
请注意,我确实将CLEARDB_DATABASE_URL分配给了DATABASE_URL,所以这不是问题。另外,使用我的sequelize迁移文件来设置数据库没有问题,所以它显然可以连接。
我当前的主要问题是:
是否需要为Sequelize设置一个特定端口,以便在CLEARDB环境变量之外与数据库通信?
我是否需要在某处使用套接字文件?
非常感谢您提供的任何帮助或想法。