https://www.npmjs.com/package/mysql
기본적으로, Node와 Mysql 사이의 호환 문제로 일어난다고 한다.
(이걸 아직도..... // 그냥도 아니고 특정 시간 단위로도 일어나고/// )
해결책으로는,,
1. 위에서는 아무 일도 하지 않는 콜백함수를 심으라고(?) 한다.
connection.on('error', function() {} );
단, 에러처리를 해놓으면 pm2 로그나 다른 곳에 그 기록은 남으므로 콘솔 정도는 하나 놓는게.
2. 스택오버플로에서의 주 의견으로는,
2-1. setTimeout혹은 setInterval과 같이 시간적 거리를 두거나,
2-2. 시작과 종료를 확실히 하거나 (하지만 이건 일부 케이스. 매번 end()를 하지 않아도 된다는 말도 많다)
2-3. connection을 관리하는 함수를 만들어서 관리한다.
(제목으로 검색하면 많이 뜨는 그 스택오버플로.)
ex1.) 출처 : 스택오버플로 참조, createConnection 방식
var mysql = require('mysql');
var mysql_config = {
host: '127.0.0.1',
user: 'root',
password: '123456',
database: 'workstation'
};
function handleDisconnection() {
var connection = mysql.createConnection(mysql_config);
connection.connect(function(err) {
if(err) {
setTimeout('handleDisconnection()', 2000);
}
});
connection.on('error', function(err) {
console.log(err);
if(err.code === 'PROTOCOL_CONNECTION_LOST') {
console.log(err);
handleDisconnection();
} else {
throw err;
}
});
exports.connection = connection;
}
exports.handleDisconnection = handleDisconnection;
ex2) 역시나 출처는 스택오버플로. 누가 원본인지 모르겠다... pool 방식.
var mysql=require("mysql");
var pool = mysql.createPool({
host: '127.0.0.1',
user:'root',
password:'123456',
database:'workstation'
});
var query = function(sql, options, callback){
pool.getConnection( function(err, conn){
if(err) {
callback(err, null, null);
}else{
conn.query(sql, options, function(err, results, fields){
callback(err, results, fields);
});
conn.release();
}
});
};
module.exports=query;
3. config를 조정한다.
보통 8시간 단위로 되어있다는데, 그래서 포레버로 돌려도 8시간마다 재작동/가동된다는 말///
이를 늘리는 방향으로.
되는 걸 골라서 써야 하는,, 자바스크립트한 자바스크립트.
'배워서 남주는 코딩' 카테고리의 다른 글
안드로이드, SHA키 발급받기 (0) | 2020.02.29 |
---|---|
$.ajax / $.ajaxForm / $.ajaxSubmit is not a function (0) | 2020.01.23 |
리눅스 포트 킬(죽이기) (0) | 2019.11.16 |
More than one file was found with OS independent path (0) | 2019.10.16 |
kakaomap api by 'Can't load DaumMapEngineApi.so file' (1) | 2019.10.15 |