Question
This Content is from Stack Overflow. Question asked by piroli
I’m a novice at node.js and I want to create an API which sends data to a MySQL server to store them.
I followed a youtube tutorial to create a connection with a MySQL database, also checked other tutorials just to be sure, but I always get this error message when my code tries to connect to MySQL. I used XAMPP first, and then tried downloading and using MySQL from mysql.com, but got the same error.
/home/broken/mysql_projekt/app.js:24
throw err;
^
Error: connect ECONNREFUSED 127.0.0.1:3306
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1247:16)
--------------------
at Protocol._enqueue (/home/broken/mysql_projekt/node_modules/mysql/lib/protocol/Protocol.js:144:48)
at Protocol.handshake (/home/broken/mysql_projekt/node_modules/mysql/lib/protocol/Protocol.js:51:23)
at Connection.connect (/home/broken/mysql_projekt/node_modules/mysql/lib/Connection.js:116:18)
at Object.<anonymous> (/home/broken/mysql_projekt/app.js:22:4)
at Module._compile (node:internal/modules/cjs/loader:1126:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
at Module.load (node:internal/modules/cjs/loader:1004:32)
at Function.Module._load (node:internal/modules/cjs/loader:839:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47 {
errno: -111,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 3306,
fatal: true
}
I tried the suggested solutions at other questions but I didn’t succeed.
Here’s what I tried:
- Changing localhost to 127.0.0.1 in the connection configuration.
- Check in services.msc if the MySQL service is in a running state.
- Tried to add firewall rules to allow outbound and inbound access on
port 3306. - Create another user aside from root with a password with all
privileges, and try to connect with that. - Also tried to add “socketPath: ‘/var/run/mysqld/mysqld.sock'” to my
connection configuration, as someone in another
question
said that it seemed to solve other’s problem, but they just got a
different error message, just like me. (unfortunately I couldn’t really understand what it does) - Also tried on another computer, but of course the issue still
remained. - Tried to specify the port number to 3306 in the connection
configuration.
Here is my code:
var express = require('express');
var mysql = require('mysql');
var PORT = 3000;
var app = express();
app.listen(
PORT,
() => {console.log(`Server started on port ${PORT}`)
})
//Creating MySQL connection
var db = mysql.createConnection({
host : "localhost",
user : "user",
password : "password"
//socketPath: '/var/run/mysqld/mysqld.sock'
});
//Connecting
db.connect((err) => {
if(err){
throw err;
}
console.log('MySQL connected');
});
If someone has figured it out, could you share the solution? Thank you!
Solution
The error ECONNREFUSED 127.0.0.1:3306
is being raised by Node.js itself, and not this module. This module passes the error through, though, from Node.js. Basically, this module is asking Node.js to create a TCP connection to 127.0.0.1
, port 3306
, but for whatever reason, Node.js cannot do this and raises the ECONNREFUSED
error.
Unfortunately there is nothing this module can do to resolve this.
It could be an issue with Node.js (in which you can open on the Node.js issue tracker) or an issue with your MySQL server (did it restart or something?). If there is some specific things you can list to change in this module, we can re-open the issue, though.
Answered by dougwilson
This Question and Answer are collected from stackoverflow and tested by JTuto community, is licensed under the terms of CC BY-SA 4.0.