0

Node.JS를 사용하여 MySQL 데이터베이스에 연결하려고합니다. 처음에는 작동합니다.Node.JS/MySQL - 오류 : 무작위로 연결 ECONNREFUSED 연결

Error: connect ECONNREFUSED 127.0.0.1:3306 
    at Object._errnoException (util.js:1031:13) 
    at _exceptionWithHostPort (util.js:1052:20) 
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1195:14) 
    -------------------- 
    at Protocol._enqueue (/root/Geola/node_modules/mysql/lib/protocol/Protocol.js:145:48) 
    at Protocol.handshake (/root/Geola/node_modules/mysql/lib/protocol/Protocol.js:52:23) 
    at Connection.connect (/root/Geola/node_modules/mysql/lib/Connection.js:130:18) 
    at Object.<anonymous> (/root/Geola/runMain.js:24:12) 
    at Module._compile (module.js:641:30) 
    at Object.Module._extensions..js (module.js:652:10) 
    at Module.load (module.js:560:32) 
    at tryModuleLoad (module.js:503:12) 
    at Function.Module._load (module.js:495:3) 
    at Object.<anonymous> (/usr/local/lib/node_modules/pm2/lib/ProcessContainerFork.js:73:21) 

내가 포트 명령 netstat -tlnp을 사용하여 올바른지 재확인하고 정확한 것 같다 tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 25362/mysqld

그래서 나는를 다시 돌아 왔을 : 그럼, 좀 무작위로, 다음과 같은 오류를 제공 Node.JS 앱과 모든 것이 다시 작동합니다 ... 다시 무작위로, 오류가 다시 나타납니다. 데이터베이스와 상호 작용하려고 할 때만 오류가 있는지 테스트 한 결과이 오류가 실제로 발생하지 않는 것으로 나타났습니다. 때로는 DB와 잘 상호 작용할 수 있지만 때로는 불가능합니다. 이 오류는 매우 이상한 것으로 알고 있으므로 누구든지 문제를 알고 있다면 알려 주시기 바랍니다. 감사!

+0

mysql> SHOW STATUS LIKE 'UPTIME'; '. 해당 쿼리를 지금 실행하고 값을 기록한 다음 다음에이 오류가 발생하면 다시 실행하십시오. 이것은 MySQL 프로세스가 마지막으로 재시작 된 이후의 시간 (초)이며 서비스를 재시작하지 않는 한 그 숫자는 결코 작아서는 안됩니다. 그렇다면 무언가에 의해 MySQL 서버 데몬이 충돌하고 복구하게됩니다. 이것이 가장 가능성있는 설명입니다. –

답변

0

앱이 mysql 인스턴스에 연결할 수없는 경우에 발생합니다. 이 오류는 mysql error 이벤트를 수신하여 catch 될 수 있습니다.

connection.on('error', function(err) { 
    console.log(err) 
}) 

mysql이 3306에서 실행되는 경우에도 연결을 최대한으로 설정했거나 일시적인 네트워크 문제 일 수 있습니다. mysql을 show variables like "max_connections"으로 확인할 수 있습니다.이 값을 늘려야 할 수도 있습니다. 또한 앱이 경로 또는 기타 역동적 인 영역이 아닌 시작시에만 연결을 설정하는지 확인하십시오. 그러나이 경험이있는 경우 일반적으로 응용 프로그램 서버와 db 서버 간의 네트워크 연결 불량이 원인이었습니다.

+0

그러나 내 응용 프로그램은 실제로'connection.query ("max_connections '와 같은 변수 표시, function (err, result) { console.log (result) })'을 실행하면 실제로 시작할 때만 연결을 설정합니다. 아무것도 기록되지 않는다. –

0

좋아요. 답변을 찾았습니다. 데이터베이스 오너 인 Digital Ocean이 얼마나 많은 데이터를 한꺼번에 보낼 수 있는지에 대한 제한이있었습니다.

관련 문제