Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用mysql模块在node.js中执行Sql查询_Javascript_Mysql_Node.js_Express - Fatal编程技术网

Javascript 无法使用mysql模块在node.js中执行Sql查询

Javascript 无法使用mysql模块在node.js中执行Sql查询,javascript,mysql,node.js,express,Javascript,Mysql,Node.js,Express,下面是我的app.js文件内容。当我尝试在节点中执行此操作时,我得到了“执行查询时出错”。虽然此表包含5行,但似乎仍然有问题。请让我知道我哪里做错了 app.js var express = require('express'); var mysql = require('mysql'); var app = express(); var port = process.env.PORT || 8081; var con = mysql.createConnection({ host: "l

下面是我的app.js文件内容。当我尝试在节点中执行此操作时,我得到了“执行查询时出错”。虽然此表包含5行,但似乎仍然有问题。请让我知道我哪里做错了

app.js

var express = require('express');
var mysql = require('mysql');
var app = express();
var port = process.env.PORT || 8081;

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

con.connect(function(err){
  if(err){
    console.log('Error connecting to Db');
    return;
  }
  console.log('Connection established');
});

app.get("/",function(req,res){
  con.query("select * from club_data ", function(err, rows,field) {
  if (!err)
  {
    console.log('The solution is: ', rows);
   }
  else
    console.log('Error while performing Query.');
  });
});



con.end(function(err) {
  // The connection is terminated gracefully
  // Ensures all previously enqueued queries are still
  // before sending a COM_QUIT packet to the MySQL server.
});

// START THE SERVER
// =============================================================================
app.listen(port);
服务器输出:

PS C:\Users\skull_king\Desktop\Workspace> node .\app.js
Connection established
Error while performing Query.

记住Node.JS大部分是异步的。使用app.get(…)声明的请求处理程序不会立即执行,而是在收到第一个(或任何)请求后才执行

声明请求处理程序后,您将立即使用
con.end(…)
调用关闭MySQL连接,甚至在处理第一个请求之前。当您试图处理请求时,
con
已经关闭,因为您之前已使用
con.end
将其关闭

您可能试图实现的是在服务器关闭时关闭MySQL连接。为此,您可以监听服务器的
close
事件(但未测试):


您是否尝试过记录
err
?确切的错误消息是什么?console.log('执行查询时出错');这将获取printedPS C:\Users\skull\u king\Desktop\Workspace>节点。\app.js执行查询时建立连接时出错<代码>{[错误:调用quit后无法将查询排队。]代码:'PROTOCOL\u enqueue\u after\u quit',fatal:false}如果删除
con.end()
,会发生什么?谢谢,现在对我来说效果很好。由于它是异步的,所以我将con.end放在app.get(..)之前,使其超出范围。很乐意提供帮助。不过,不确定在处理程序末尾关闭连接是否是个好主意。在第一次请求之后,连接不会被关闭吗?
app.on('close', function() {
    con.end();
});