Javascript 无法使用mysql模块在node.js中执行Sql查询
下面是我的app.js文件内容。当我尝试在节点中执行此操作时,我得到了“执行查询时出错”。虽然此表包含5行,但似乎仍然有问题。请让我知道我哪里做错了 app.jsJavascript 无法使用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
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();
});