Unable to connect to remote MySQL database in Node.js application (DOCKER)? - javascript

I have NODE.JS application which works with remote MySQL database. In my local computer (windows 10) application successfully connected to remote MySQL database. I use sequelize library for this task. MySQL database has 40 maximum connection pool for each user. When I run this application in Docker which is in CentOS server I notice error. Application raise error when try to connect to remote MySQL database in Docker container. What can be the reason of this problem for your opinion? How I can fix this problem?
ERROR:
Unable to connect to remote MySQL database: { SequelizeConnectionError: connect ETIMEDOUT
at Utils.Promise.tap.then.catch.err (/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:149:19)
at tryCatcher (/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/node_modules/bluebird/js/release/promise.js:690:18)
at _drainQueueStep (/node_modules/bluebird/js/release/async.js:138:12)
at _drainQueue (/node_modules/bluebird/js/release/async.js:131:9)
at Async._drainQueues (/node_modules/bluebird/js/release/async.js:147:5)
at Immediate.Async.drainQueues [as _onImmediate] (/node_modules/bluebird/js/release/async.js:17:14)
at processImmediate (timers.js:632:19)
name: 'SequelizeConnectionError',
parent:
{ Error: connect ETIMEDOUT
at Connection._handleTimeoutError (/node_modules/mysql2/lib/connection.js:173:17)
at listOnTimeout (timers.js:324:15)
at processTimers (timers.js:268:5)
errorno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
fatal: true },
original:
{ Error: connect ETIMEDOUT
at Connection._handleTimeoutError (/node_modules/mysql2/lib/connection.js:173:17)
at listOnTimeout (timers.js:324:15)
at processTimers (timers.js:268:5)
errorno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
fatal: true } }
JS:
const Sequelize = require('sequelize');
// "max_user_connections" resource for "db_user" user is "40".
const sequelize = new Sequelize('db_name', 'db_user', 'db_password', {
host: 'HOST',
port: '3306',
dialect: 'mysql',
pool: {
max: 15,
min: 5,
idle: 20000,
evict: 15000,
acquire: 30000
}
});
sequelize.authenticate().then(() => {
console.log('Connection to remote MySQL database has been established successfully.');
}).catch(err => {
console.error('Unable to connect to remote MySQL database:', err);
});
module.exports = sequelize;
Dependencies:
"sequelize": "^4.42.0",
"mysql2": "^1.6.4"

Related

MSSQL & Node.JS - Failed to connect to WIN-OTGKTVPUIFC:1433

I have a problem when connect to SQL Server.
My config connect SQL Server:
const mssql = require('mssql');
const configMsSql = {
server:"myserver",
port:myport,
user:"username",
password:"pass",
database:"dbname",
options:{
trustServerCertificate: true
}
};
async function connectState(){
const connect = await mssql.connect(configMsSql);
console.log("Connect to SQL successfully!");
return connect;
}
module.exports = connectState();
After run server. mssql throw error:
err = new ConnectionError(err)
^
ConnectionError: Failed to connect to WIN-OTGKTVPUIFC:1433 - 7C250000:error:0A000102:SSL routines:ssl_choose_client_version:unsupported protocol:c:\ws\deps\openssl\openssl\ssl\statem\statem_lib.c:1986:
at C:\UIS\SboxNode\node_modules\mssql\lib\tedious\connection-pool.js:70:17
at Connection.onConnect (C:\UIS\SboxNode\node_modules\tedious\lib\connection.js:1020:9)
at Object.onceWrapper (node:events:628:26)
at Connection.emit (node:events:513:28)
at Connection.emit (C:\UIS\SboxNode\node_modules\tedious\lib\connection.js:1048:18)
at Connection.socketError (C:\UIS\SboxNode\node_modules\tedious\lib\connection.js:1399:12)
at C:\UIS\SboxNode\node_modules\tedious\lib\connection.js:2406:25
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
code: 'ESOCKET',
originalError: ConnectionError: Failed to connect to WIN-OTGKTVPUIFC:1433 - 7C250000:error:0A000102:SSL routines:ssl_choose_client_version:unsupported protocol:c:\ws\deps\openssl\openssl\ssl\statem\statem_lib.c:1986:
at Connection.socketError (C:\UIS\SboxNode\node_modules\tedious\lib\connection.js:1399:28)
at C:\UIS\SboxNode\node_modules\tedious\lib\connection.js:2406:25
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
code: 'ESOCKET',
isTransient: undefined
}
}
Node.js v18.12.1
Although I enabled TCP/IP and field TCP Port used exactly.
I tried to search gg this error but the most answer that "enable TCP/IP".
I spent many time to fix but cant. Help me plzz :(

Issue connection to database

I have an application with a frontend that uses React and a backend that uses the Nodejs environment with the Express framework.
To communicate and store the data I use MongoDB.
I have been developing this application for a few weeks now and everything is working fine until today.
This morning again I developed and I could test everything, it responded well.
Since two hours when I write npm start in my terminal on vscode in the backend folder, I get an error while before my server was running fine. I want to specify that I made a 30min break between when I stopped coding this morning and when I started again this afternoon, I didn't change anything in the code in the meantime but the server doesn't start anymore. I also want to say that npm start in my frontend folder is still working fine.
Implementing mongo db in my backend code
db.js in models folder
const mongoose = require('mongoose');
mongoose.connect(process.env.MONGODB_URI, { useNewURLParser: true, useUnifiedTopology: true });
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error'));
db.once('open', function () {
console.log('Connected')
});
implementation of mongo in app.js of backend folder
var createError = require("http-errors");
var express = require("express");
var path = require("path");
var cookieParser = require("cookie-parser");
var bodyParser = require("body-parser");
var logger = require("morgan");
var cors = require("cors");
require('dotenv').config();
var whitelist = ['http://localhost:3000']
var corsOption = {
origin: function (origin, callback) {
if (whitelist.indexOf(origin) !== -1) {
callback(null, true)
} else {
callback(new Error('Not allowed by CORS'))
}
}
}
var getAPIRouter = require("./routes/apiRoutes.js");
var app = express();
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "jade");
app.use(cors(corsOption));
app.use(logger("dev"));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, "public")));
app.use("/", getAPIRouter);
require('./routes/auth.routes')(app);
require('./routes/user.routes')(app);
const db = require("./models");
const Role = db.role;
db.mongoose
.connect(process.env.MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => {
console.log("Successfully connect to MongoDB.");
initial();
})
.catch(err => {
console.error("Connection error", err);
process.exit();
});
//just for first time running
function initial() {
Role.estimatedDocumentCount((err, count) => {
if (!err && count === 0) {
new Role({
name: "user"
}).save(err => {
if (err) {
console.log("error", err);
}
console.log("added 'user' to roles collection");
});
new Role({
name: "moderator"
}).save(err => {
if (err) {
console.log("error", err);
}
console.log("added 'moderator' to roles collection");
});
new Role({
name: "admin"
}).save(err => {
if (err) {
console.log("error", err);
}
console.log("added 'admin' to roles collection");
});
}
});
}
app.use(function (req, res, next) {
next(createError(404));
});
app.use(function (err, req, res, next) {
res.locals.message = err.message;
res.locals.error = req.app.get("env") === "development" ? err : {};
res.status(err.status || 500);
res.render("error");
});
module.exports = app;
My error in the terminal
PS C:\Users\deyga\Documents\GitHub\PPE\backendPPE> npm start
> backendppe#0.0.0 start C:\Users\deyga\Documents\GitHub\PPE\backendPPE
> node ./bin/www
Successfully connect to MongoDB.
connection error MongooseServerSelectionError: Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you're trying to access the database from an IP that isn't whitelisted. Make sure your current IP address is on your
Atlas cluster's IP whitelist: https://docs.atlas.mongodb.com/security-whitelist/
at NativeConnection.Connection.openUri (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\connection.js:807:32)
at C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\index.js:340:10
at C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\helpers\promiseOrCallback.js:32:5
at new Promise (<anonymous>)
at promiseOrCallback (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\helpers\promiseOrCallback.js:31:10)
at Mongoose._promiseOrCallback (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\index.js:1174:10)
at Mongoose.connect (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\index.js:339:20)
at Object.<anonymous> (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\models\db.js:2:10)
at Module._compile (node:internal/modules/cjs/loader:1099:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10) {
reason: TopologyDescription {
type: 'ReplicaSetNoPrimary',
servers: Map(3) {
'cluster0-shard-00-00.0ynbf.mongodb.net:27017' => [ServerDescription],
'cluster0-shard-00-01.0ynbf.mongodb.net:27017' => [ServerDescription],
'cluster0-shard-00-02.0ynbf.mongodb.net:27017' => [ServerDescription]
},
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
setName: 'atlas-sujybn-shard-0',
logicalSessionTimeoutMinutes: undefined
}
}
node:internal/process/promises:279
triggerUncaughtException(err, true /* fromPromise */);
^
MongooseServerSelectionError: Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you're
trying to access the database from an IP that isn't whitelisted. Make sure your current IP address is on your Atlas cluster's IP whitelist: https://docs.atlas.mongodb.com/security-whitelist/
at NativeConnection.Connection.openUri (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\connection.js:807:32)
at C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\index.js:340:10
at C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\helpers\promiseOrCallback.js:32:5
at new Promise (<anonymous>)
at promiseOrCallback (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\helpers\promiseOrCallback.js:31:10)
at Mongoose._promiseOrCallback (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\index.js:1174:10)
at Mongoose.connect (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongoose\lib\index.js:339:20)
at Object.<anonymous> (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\models\db.js:2:10)
at Module._compile (node:internal/modules/cjs/loader:1099:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10) {
reason: TopologyDescription {
type: 'ReplicaSetNoPrimary',
servers: Map(3) {
'cluster0-shard-00-00.0ynbf.mongodb.net:27017' => ServerDescription {
_hostAddress: HostAddress {
isIPv6: false,
host: 'cluster0-shard-00-00.0ynbf.mongodb.net',
port: 27017
},
address: 'cluster0-shard-00-00.0ynbf.mongodb.net:27017',
type: 'Unknown',
hosts: [],
passives: [],
arbiters: [],
tags: {},
minWireVersion: 0,
maxWireVersion: 0,
roundTripTime: -1,
lastUpdateTime: 2826297,
lastWriteDate: 0,
error: MongoNetworkError: connect ETIMEDOUT 108.129.27.210:27017
at connectionFailureError (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongodb\lib\cmap\connect.js:381:20)
at TLSSocket.<anonymous> (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongodb\lib\cmap\connect.js:301:22)
at Object.onceWrapper (node:events:642:26)
at TLSSocket.emit (node:events:527:28)
at emitErrorNT (node:internal/streams/destroy:164:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
},
'cluster0-shard-00-01.0ynbf.mongodb.net:27017' => ServerDescription {
_hostAddress: HostAddress {
isIPv6: false,
host: 'cluster0-shard-00-01.0ynbf.mongodb.net',
port: 27017
},
address: 'cluster0-shard-00-01.0ynbf.mongodb.net:27017',
type: 'Unknown',
hosts: [],
passives: [],
arbiters: [],
tags: {},
minWireVersion: 0,
maxWireVersion: 0,
roundTripTime: -1,
lastUpdateTime: 2826308,
lastWriteDate: 0,
error: MongoNetworkError: connect ETIMEDOUT 52.212.197.12:27017
at connectionFailureError (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongodb\lib\cmap\connect.js:381:20)
at TLSSocket.<anonymous> (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongodb\lib\cmap\connect.js:301:22)
at Object.onceWrapper (node:events:642:26)
at TLSSocket.emit (node:events:527:28)
at emitErrorNT (node:internal/streams/destroy:164:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
},
'cluster0-shard-00-02.0ynbf.mongodb.net:27017' => ServerDescription {
_hostAddress: HostAddress {
isIPv6: false,
host: 'cluster0-shard-00-02.0ynbf.mongodb.net',
port: 27017
},
address: 'cluster0-shard-00-02.0ynbf.mongodb.net:27017',
type: 'Unknown',
hosts: [],
passives: [],
arbiters: [],
tags: {},
minWireVersion: 0,
maxWireVersion: 0,
roundTripTime: -1,
lastUpdateTime: 2826318,
lastWriteDate: 0,
error: MongoNetworkError: connect ETIMEDOUT 34.246.79.174:27017
at connectionFailureError (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongodb\lib\cmap\connect.js:381:20)
at TLSSocket.<anonymous> (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\mongodb\lib\cmap\connect.js:301:22)
at Object.onceWrapper (node:events:642:26)
at TLSSocket.emit (node:events:527:28)
at emitErrorNT (node:internal/streams/destroy:164:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
}
},
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
setName: 'atlas-sujybn-shard-0',
logicalSessionTimeoutMinutes: undefined
}
}
Node.js v17.7.2
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! backendppe#0.0.0 start: `node ./bin/www`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the backendppe#0.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\deyga\AppData\Roaming\npm-cache\_logs\2022-04-04T13_57_51_440Z-debug.log
Complete log of this run
0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli 'start'
1 verbose cli ]
2 info using npm#6.14.15
3 info using node#v14.18.0
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle backendppe#0.0.0~prestart: backendppe#0.0.0
6 info lifecycle backendppe#0.0.0~start: backendppe#0.0.0
7 verbose lifecycle backendppe#0.0.0~start: unsafe-perm in lifecycle true
8 verbose lifecycle backendppe#0.0.0~start: PATH: C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\.bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files\Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath;C:\Python310\Scripts\;C:\Python310\;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;C:\ProgramData\chocolatey\bin;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Android\android-sdk\platform-tools;C:\Windows\System32\;C:\Users\deyga\AppData\Local\Microsoft\WindowsApps;C:\Users\deyga\AppData\Local\GitHubDesktop\bin;C:\Users\deyga\AppData\Local\Microsoft\WindowsApps;C:\texlive\2020\bin\win32;C:\Users\deyga\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\deyga\AppData\Roaming\npm;C:\Program Files\heroku\bin;C:\Users\deyga\Documents\GitHub\PROJECT_WEB_OCRES;
9 verbose lifecycle backendppe#0.0.0~start: CWD: C:\Users\deyga\Documents\GitHub\PPE\backendPPE
10 silly lifecycle backendppe#0.0.0~start: Args: [ '/d /s /c', 'node ./bin/www' ]
11 silly lifecycle backendppe#0.0.0~start: Returned: code: 1 signal: null
12 info lifecycle backendppe#0.0.0~start: Failed to exec start script
13 verbose stack Error: backendppe#0.0.0 start: `node ./bin/www`
13 verbose stack Exit status 1
13 verbose stack at EventEmitter.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\index.js:332:16)
13 verbose stack at EventEmitter.emit (events.js:400:28)
13 verbose stack at ChildProcess.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack at ChildProcess.emit (events.js:400:28)
13 verbose stack at maybeClose (internal/child_process.js:1058:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:293:5)
14 verbose pkgid backendppe#0.0.0
15 verbose cwd C:\Users\deyga\Documents\GitHub\PPE\backendPPE
16 verbose Windows_NT 10.0.19043
17 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "start"
18 verbose node v14.18.0
19 verbose npm v6.14.15
20 error code ELIFECYCLE
21 error errno 1
22 error backendppe#0.0.0 start: `node ./bin/www`
22 error Exit status 1
23 error Failed at the backendppe#0.0.0 start script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]
Message returned in the backend site when I try to access its route: "http://localhost:5000/api/forums"
Not allowed by CORS
Error: Not allowed by CORS
at origin (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\app.js:21:16)
at C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\cors\lib\index.js:219:13
at optionsCallback (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\cors\lib\index.js:199:9)
at corsMiddleware (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\cors\lib\index.js:204:7)
at Layer.handle [as handle_request] (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\express\lib\router\index.js:323:13)
at C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\express\lib\router\index.js:284:7
at Function.process_params (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\express\lib\router\index.js:341:12)
at next (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\express\lib\router\index.js:275:10)
at expressInit (C:\Users\deyga\Documents\GitHub\PPE\backendPPE\node_modules\express\lib\middleware\init.js:40:5)
I use two different ports for my backend server (port 5000) and the frontend (port 3000).
I tried to delete node module in my backend folder and then redo an npm install but it didn't change anything. I also tried to upgrade my npm without result either. I also tried to recover my ip address on https://www.whatismyip.com/ to add it in network access in MongoDB but it did not solve my problem either.
MongoDB Network Access settings
I tried to put as much information as possible about the error but if you find any missing let me know and I will try to add it as soon as possible.
I found several people with the same problem as me on the forums but no solution worked for me, if you could help me it would save me :)

Why Can't I connect SQL Server to my node js

I'm using the 'mssql' npm package to connect my SQL server to my node JS.
I went through a few questions, but it wasn't solved anywhere.
My SQL Server login credentials are-
server type : Database Engine
Server name : DESKTOP-MPF88ST\KUSHAL
authentication : sql server authentication
login : username
password : password
and the database I wanna get is schoolDB
and my code goes something like this
const sql =require("mssql")
const config = {
login: 'username',
password:'password',
server: 'localhost',
database: "schoolDB",
options : {
enableArithAbort: true
},
port : 1433
}
sql.connect(config, (err) => {
if(err){
console.log(err);
}
else {
console.log("Connected")
}
I have my TCP/IP enabled and set up, SQL Server Browser enabled, but it still throws the error-
ConnectionError: Failed to connect to localhost:1433 - Could not connect (sequence)
at Connection.<anonymous> (E:\Kushals\server\node_modules\mssql\lib\tedious\connection-pool.js:68:17)
at Object.onceWrapper (events.js:422:26)
at Connection.emit (events.js:315:20)
at Connection.socketError (E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\connection.js:1290:12)
at E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\connection.js:1116:21
at SequentialConnectionStrategy.connect (E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\connector.js:87:14)
at Socket.onError (E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\connector.js:100:12)
at Socket.emit (events.js:315:20)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3) {
code: 'ESOCKET',
originalError: ConnectionError: Failed to connect to localhost:1433 - Could not connect (sequence)
at ConnectionError (E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\errors.js:13:12)
at Connection.socketError (E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\connection.js:1290:56)
at E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\connection.js:1116:21
at SequentialConnectionStrategy.connect (E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\connector.js:87:14)
at Socket.onError (E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\connector.js:100:12)
at Socket.emit (events.js:315:20)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
code: 'ESOCKET'
}
}
How can I solve it ??
Try this:
const sql = require('mssql/msnodesqlv8')
const pool = new sql.ConnectionPool({
login: 'username',
password:'password',
database: 'schoolDB',
server: 'DESKTOP-MPF88ST\KUSHAL',
driver: 'msnodesqlv8',
options: {
trustedConnection: true
}
})
pool.connect().then(() => {
//sample query
pool.request().query('select 1 as number', (err, result) => {
console.dir(result)
})
})
Ensure that the TCP/IP protocol is Enabled as it is disabled by default.
Steps:
Go to Computer management
Under Service and Applications -> SQL Server Configuration Manager
-> SQL Server Network configuration -> click on "Protocols for MSSQLSERVER"
You will see TCP/IP section (to enable right click and enable it)

How to connect Mongo Atlas Database in Lambda function with Mongoose

I am using Serverless framework to deploy my backend to API Gateway and AWS Lambda.
Here is my serverless.yml for this specific lambda function.
It is a cron job that runs every hour.
cron:
handler: handler.transferHandler
events:
- schedule: rate(1 hour)
Now when I test on localhost it works perfectly. But when I deploy to aws I get the following error:
MongoDB connection error. Please make sure MongoDb is running. { MongoError: failed to connect to server [undefined:27017] on first connect [MongoError: getaddrinfo ENOTFOUND undefined undefined:27017]
at Pool.<anonymous> (/var/task/node_modules/mongodb-core/lib/topologies/server.js:336:35)
at emitOne (events.js:96:13)
at Pool.emit (events.js:188:7)
at Connection.<anonymous> (/var/task/node_modules/mongodb-core/lib/connection/pool.js:280:12)
at Connection.g (events.js:292:16)
at emitTwo (events.js:106:13)
at Connection.emit (events.js:191:7)
at Socket.<anonymous> (/var/task/node_modules/mongodb-core/lib/connection/connection.js:189:49)
at Socket.g (events.js:292:16)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at connectErrorNT (net.js:1021:8)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickDomainCallback (internal/process/next_tick.js:128:9)
name: 'MongoError',
message: 'failed to connect to server [undefined:27017] on first connect [MongoError: getaddrinfo ENOTFOUND undefined undefined:27017]' }
Here is my function in my handler.js:
exports.transferHandler = function transferHandler(event, context) {
context.callbackWaitsForEmptyEventLoop = false;
mongoose.connect(mongoString, {useMongoClient: true});
const db = mongoose.connection;
db.on("error", (err) => {
console.log("MongoDB connection error. Please make sure MongoDb is running.", err);
process.exit();
});
db.once('open', () => {
BookingModel
.find({})
.then((bookings) => {
...
})
.catch((err) => {
console.log(err);
})
.finally(() => {
db.close();
});
});
};
After 2 weeks of being stuck on this, I learned that I needed to specify my environment variables in my serverless.yml for it to work. My functions were never connecting to the database because my mongo string was never set in lambda. Hope this helps someone.
provider:
name: aws
runtime: nodejs6.10
stage: production
region: us-west-1
environment:
MONGODB_URL: ${env:MONGODB_URL}
S3_BUCKET: ${env:S3_BUCKET}
S3_BUCKET_REPORT: ${env:S3_BUCKET_REPORT}
STRIPE_CLIENT_ID: ${env:STRIPE_CLIENT_ID}
STRIPE_PUBLIC_KEY: ${env:STRIPE_PUBLIC_KEY}
STRIPE_SECERET_KEY: ${env:STRIPE_SECERET_KEY}
JWT_SECRET: ${env:JWT_SECRET}
SEND_BIRD_TOKEN: ${env:SEND_BIRD_TOKEN}
SEND_BIRD_APP_ID: ${env:SEND_BIRD_APP_ID}
MANDRILL_APIKEY: ${env:MANDRILL_APIKEY}

Sequelize Connection Error when creating model

When I execute this program everything works fine:
const Sequelize = require("sequelize");
const Conn = new Sequelize("data","postgresql","postgresql", {
'host' : "localhost",
'dialect' : "postgres",
'port' : "1337"
})
// piece of code to be added here
Conn.sync().then(function(){
console.log('DB connection sucessful.');
}, function(err){
console.log(err);
});
the Console logs: DB connection successful.
When I add this line however:
const User = Conn.define('user', {
firstName: {
type: Sequelize.STRING
},
lastName: {
type: Sequelize.STRING
}
});
I get this error message:
{ SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:1337
at connection.connect.err (G:\projects\investcrypto\node_modules\sequelize\lib\dialects\postgres\connection-manager.js:95:24)
at Connection.connectingErrorHandler (G:\projects\investcrypto\node_modules\pg\lib\client.js:123:14)
at emitOne (events.js:115:13)
at Connection.emit (events.js:210:7)
at Socket.<anonymous> (G:\projects\investcrypto\node_modules\pg\lib\connection.js:71:10)
at emitOne (events.js:115:13)
at Socket.emit (events.js:210:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
name: 'SequelizeConnectionRefusedError',
parent:
{ Error: connect ECONNREFUSED 127.0.0.1:1337
at Object.exports._errnoException (util.js:1024:11)
at exports._exceptionWithHostPort (util.js:1047:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1150:14)
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 1337 },
original:
{ Error: connect ECONNREFUSED 127.0.0.1:1337
at Object.exports._errnoException (util.js:1024:11)
at exports._exceptionWithHostPort (util.js:1047:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1150:14)
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 1337 } }
Versions:
npm: 5.3.0
node: 8.2.1
sequelize: 4.8.3
pg: 7.3.0
pg-hstore 2.3.2
Try making the port 5432. That is the default port for postgres. Make sure the database data was created by the user postgresql and that the password is indeed postgresql. Depending how the DB was created you might be able to just set username and password to null
Also, the Sequelize cli is really helpful for doing a lot of the boiler plate code

Categories