Завершение соединения MySQL

0

Я испытываю некоторые трудности с подключением MySQL:

const http = require('http');
const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');
const expressValidator = require('express-validator');
const flash = require('connect-flash');
const session = require('express-session');
const db = require('./config/db');

// Init App
const app = express();

//msql connection
db.connect(function(err){
  if(err){
    throw err;
  }
  console.log('MySQL Connected...');
});

// View Engine
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));

// Bodyparser middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

// Set Static path
app.use(express.static(path.join(__dirname, 'static')));

// Session middleware
app.use(session({
  secret: 'stuffedbagels',
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true }
}));

// Express Messages middleware
app.use(require('connect-flash')());
app.use(function (req, res, next) {
  res.locals.messages = require('express-messages')(req, res);
  next();
});

// Global Variables
app.use(function(req, res, next){
  res.locals.errors = null;
  next();
});

// Express Validator Middleware
app.use(expressValidator({
  errorFormatter: function(param, msg, value) {
      var namespace = param.split('.')
      , root    = namespace.shift()
      , formParam = root;

    while(namespace.length) {
      formParam += '[' + namespace.shift() + ']';
    }
    return {
      param : formParam,
      msg   : msg,
      value : value
    };
  }
}));

// Routes
// Home
app.get('/', function(req, res) {
  res.render('index');
});


// Register
app.post('/config/register', function(req, res){

  req.checkBody('username', 'Username is required').notEmpty();
  req.checkBody('kingname', 'Kingdom Name is Required').notEmpty();
  req.checkBody('email', 'E-Mail is Required').notEmpty();
  req.checkBody('password', 'Password is Required').notEmpty();
  req.checkBody('password2', 'Password Confirmation is Required').notEmpty();

  var errors = req.validationErrors();


  if(errors) {
    res.render('index', {
      errors: errors
    });
  } else {
    var newUser = {
      username: req.body.username,
      kingname: req.body.kingname,
      email: req.body.email,
      password: req.body.password,
      password2: req.body.password2
    }
      // let post = {username: newUser.username, password: newUser.password, email: newUser.email, kingname: newUser.kingname};
      // let sql ='INSERT INTO users SET ?';
      // let query = db.query(sql, post, function(err, res){
      //   if(err) throw err;
      //   user_id = res.insertID;
      //   console.log('Last User ID', res.insertID);
      // });
    console.log('User registration successful...');
    res.redirect('/');
  }
});

app.listen(8080, function(){
  console.log('Server listening on port 8080...')
})

У меня есть соединение MySQL в модуле:

const mysql = require('mysql');

module.exports = mysql.createConnection({
  host: 'localhost',
  user: 'user',
  password: 'pass',
  database: 'table'
});

Теперь я получаю эту ошибку:

events.js: 183 throw er; // Необработанное событие 'error'

Error: Connection lost: The server closed the connection.
    at Protocol.end (/home/kogadmin/www/node_modules/mysql/lib/protocol/Protocol.js:113:13)
    at Socket.<anonymous> (/home/kogadmin/www/node_modules/mysql/lib/Connection.js:109:28)
    at emitNone (events.js:111:20)
    at Socket.emit (events.js:208:7)
    at endReadableNT (_stream_readable.js:1056:12)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
[nodemon] app crashed - waiting for file changes before starting...

Как вы можете видеть, я комментирую свою табличную вставку, потому что я думал, что это ее вызывает, но я не могу понять, ради меня, почему это так.

Может быть, стоит отметить, что я использую nginx в качестве обратного прокси.

Теги:
mariadb

1 ответ

0

Я нашел очень сомнительный ответ:

// Keep MySQL Alive
setInterval(function () {
    db.query('SELECT 1');
}, 5000);

Хотя это, похоже, работает, я бы предпочел не запрашивать мой сервер каждые х раз. Я бы предпочёл, чтобы он все время подключался.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню