econnrefused 127.0.0.1:3306
1. 문제 원인
원인은 간단했다.
보통 node 같은 경우에는 전역변수처럼 connect pool을 해주면 해당 에러가 발생한다.
함수나 라우터 밖에서 사용할 경우 비동기처리가 되어 connect 실패가 될 위험이 있다.
2. 문제 해결
express를 사용한 경우에는 app.js 에서 global 선언을 해준 후 router에서 참조를 해주면 간단하게 문제를 해결할 수 있었다.
//app.js
var app = express();
const dotenv = require('dotenv');
if (process.env.NODE_ENV === 'production') dotenv.config({ path: './.env.prod' });
if (process.env.NODE_ENV === 'development') dotenv.config({ path: './.env.dev' });
global.mysqlPool = mysql
.createPool({
host: process.env.HOST,
user: process.env.USER,
password: process.PASSWORD,
database: process.DATABASE,
port: process.env.PORT,
}).promise();
위처럼 글로벌로 mysqlpool을 선언해준뒤
router.post("/", async function (req, res, next) {
const id = req.body.id;
let sql = 'select * from table'
let [rows] = await global.mysqlPool.query(sql).catch((e)=> console.log(e));
return res.status(200).json({
status: 'succcess'
});
}
라우터에서 그대로 global.mysqlpool.query를 진행하면 된다.
그렇게 하면 connect 연결을 성공적으로 연결되는 것을 확인할 수 있다.
proce
'Computer Engineering > Node.js' 카테고리의 다른 글
[nodejs] 알리고 api로 카톡 메세지 전송하기 -2 (0) | 2022.05.19 |
---|---|
[nodejs] 알리고 api로 문자 메세지 전송하기 -1 (0) | 2022.05.18 |
[nodejs] Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client (0) | 2022.05.13 |
[node js] env 환경변수 설정하기 (0) | 2022.04.14 |
[node js] datebase 이중 연결하기, Error: read ECONNRESET 원인 및 해결법 (0) | 2022.03.28 |