mysql - Node Js Express 脚本无法创建 Mysql 数据库表

标签 mysql node.js

我使用 Express 生成器创建了 Node JS Express 应用程序。我正在尝试通过执行名为 db.js 的数据库脚本来创建表。该脚本位于数据库文件夹中。我能够运行服务器,但是当我尝试使用 C:\Users\Khundokar Nirjor\Desktop\Nodejs Resources\shopping-cart\database>node db.js 执行脚本时 C:\Users\Khundokar Nirjor\Desktop\Nodejs Resources\shopping-cart\database>

无法创建表或插入记录。

这是我的 app.js 代码。

 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;

这是 db.js 代码。

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();

最佳答案

您应该在创建连接时启用多语句 true,因为您正在运行多个语句。请更改您的配置选项,如下所示:

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

引用这个: https://github.com/mysqljs/mysql#multiple-statement-queries

关于mysql - Node Js Express 脚本无法创建 Mysql 数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57742587/

相关文章:

mysql - 连接两个表并将列值添加在一起

javascript - PHP 表单不向 MySQL 发送新数据

node.js - Express错误: EMFILE,打开的文件太多

php - mysql语句错误。没有结果

mysql - 仅匹配空格的通配符

node.js - 池 Websocket 连接 - NodeJS

node.js - Sequelize 术语 : Association vs Relation vs Relationship

javascript - discord.js 随机图像显示不正确

c - Emscripten/NodeJS : Make the actual file-system available by default

php - 如何使用mysql限制数据库中的所有列