0

I created node js express applications with express generator. I am trying to create table by executing database script called db.js . This script is located into database folder . I am able to run the server but when I tried to execute the script by using C:\Users\Khundokar Nirjor\Desktop\Nodejs Resources\shopping-cart\database>node db.js C:\Users\Khundokar Nirjor\Desktop\Nodejs Resources\shopping-cart\database>

It is not able to create the table or inserting records.

Here is my app.js code .

 var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var expressHbs = require('express-handlebars');
var mysql = require('./database/db');
var app = express();

require('./database/db');
// view engine setup
app.engine('.hbs',expressHbs({defaultLayout: 'layout' , extname: '.hbs'}));
app.set('view engine', '.hbs');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
//app.use('/users', usersRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

Here is the db.js code .

var mysql = require('mysql');
//var app = express();

var con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "",
  database: "shopdb"
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  var sql = "CREATE TABLE products (imagepath VARCHAR(255), tittle VARCHAR(255), descriptions VARCHAR(255),price VARCHAR(255))";
  var sql1 = "INSERT INTO products (imagepath, tittle,descriptions,price) VALUES ?";
  var values = [
    ['https://upload.wikimedia.org/wikipedia/en/5/5e/Gothiccover.png', 'Gothic Veido Game','Awesome Game !!!!','25'],
    ['https://upload.wikimedia.org/wikipedia/en/5/5e/Gothiccover.png', 'Gothic Veido Game','Awesome Game old !!!!','100'],

    ['https://upload.wikimedia.org/wikipedia/en/5/5e/Gothiccover.png', 'Gothic Veido Game','Awesome Game New !!!!','120'],
    ['https://upload.wikimedia.org/wikipedia/en/5/5e/Gothiccover.png', 'Gothic Veido Game','Awesome Game !!!!','26'],

  ];
  con.query(sql, sql1,[values], function (err, result) {
    if (err) throw err;
    console.log("Number of records inserted: " + result.affectedRows);
  });

});
con.destroy();

1 Answer 1

0

You should enable multistatement true while creating a connection as you are running multiple statements.change your configuration options as below:

var con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "",
  database: "shopdb",
  multipleStatements: true
});

Refer this : https://github.com/mysqljs/mysql#multiple-statement-queries

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.