mysql 为什么这个完美的SQL查询在node.js中不起作用?

waxmsbnn  于 2023-02-18  发布在  Mysql
关注(0)|答案(1)|浏览(111)

下面的查询在MySQL Workbench上运行得非常好,我加入了反勾号,这样node.js就可以处理它了:createdb.sql:

CREATE DATABASE IF NOT EXISTS `clients`;

USE `clients`;

CREATE TABLE IF NOT EXISTS `client_data` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `unique_id` VARCHAR(255),
  `uses` TINYINT,
  `auth_time` DATE,
  `last_cash` MEDIUMINT,
  PRIMARY KEY (`id`)
);

这段代码非常简单,但是返回了一个语法错误:

const mysql = require ('mysql')
const dotenv = require('dotenv')
const fs = require ('fs')
dotenv.config()
var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    password : process.env.MYSQL_KEY,
    port: 3306
  });
   
  connection.connect(function(err) {
    if (err) {
      console.error('error connecting: ' + err.stack);
      return;
    }
   
    console.log('connected as id ' + connection.threadId);
  });

let createQuery = fs.readFileSync ('./queries/createdb.sql').toString()
createQuery = createQuery.replace(/(\r\n|\n|\r)/gm, " ");
console.log (createQuery)

connection.query(createQuery, function (error, results, fields) {
    if (error) throw (error)
    if (results) console.log (results)
    if (fields) console.log (fields)
})

我不知道为什么这个完美的查询不工作...任何想法?

vddsk6oq

vddsk6oq1#

出于安全考虑,默认情况下mysql驱动程序不支持多语句查询(这里有解释)。
您可以启用多语句支持,如下所示:

var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    password : process.env.MYSQL_KEY,
    port     : 3306,
    multipleStatements: true
});

相关问题