Node.js MySQL连接未连接,但未显示任何错误
我是Node的新手,现在已经用了一个多星期了,一切都很好,直到我尝试连接到一个MySQL数据库,但我没有运气 我已经安装了必要的文件Node.js MySQL连接未连接,但未显示任何错误,mysql,node.js,Mysql,Node.js,我是Node的新手,现在已经用了一个多星期了,一切都很好,直到我尝试连接到一个MySQL数据库,但我没有运气 我已经安装了必要的文件 npm install mysql 我的代码如下 const mySQL = require('mysql'); const mySQLCon = mySQL.createConnection({ host: "localhost", user: "username", password: "password", databas
npm install mysql
我的代码如下
const mySQL = require('mysql');
const mySQLCon = mySQL.createConnection({
host: "localhost",
user: "username",
password: "password",
database: "databaseName"
});
function connectTest() {
mySQLCon.connect(function(err) {
if(err){
console.log(err.code);
console.log(err.fatal);
}
});
console.log(mySQLCon.state);
sSQL = "SELECT sField FROM tblName WHERE iID = 1";
mySQLCon.query(sSQL, function(err, rows, fields) {
if(err){
console.log("An error ocurred performing the query.");
return;
}
if (rows.length > 0) {
console.log(rows[0].sField);
} else {
console.log("No Records found!");
}
});
mySQLCon.end(function(){
// The connection has been closed
});
}
connectTest()
我正在使用
console.log(mySQLCon.state);
查看连接的状态,并显示“已断开”
我没有得到任何错误,当这个运行它只是不做任何事情
数据库位于远程PC上,但是我使用相同的凭据从此计算机以其他方式成功连接到数据库,没有任何问题(navicat)
我试着在本地数据库计算机上运行代码,看看这是否是问题所在,它做了同样的事情,没有连接,也没有错误
任何帮助都将被感激,因为我完全迷失了方向,没有任何错误来指导我,我正在做我认为正确的事情
谢谢有两种可能性 首先,连接是异步的,您应该等待连接显式结束后再执行其他操作 示例:
mySQLCon.connect(function(err) {
if(err){
console.log(err.code);
console.log(err.fatal);
return;
}
console.log(mySQLCon.state);
sSQL = "SELECT sField FROM tblName WHERE iID = 1";
mySQLCon.query(sSQL, function(err, rows, fields) {
if(err){
console.log("An error ocurred performing the query.");
return;
}
if (rows.length > 0) {
console.log(rows[0].sField);
} else {
console.log("No Records found!");
}
});
mySQLCon.end(function(){
// The connection has been closed
});
});
因此,第一种可能性是,您永远不会得到任何错误,因为连接有超时。因此,在到达时间之前,函数将挂起 似乎可以使用选项
connectTimeout:1000000
更改超时
第二种可能性是它实际上是连接的,因为您没有
控制台.log
告诉您不知道。我指的是我刚才向您描述的异步问题。@D C您可以指的是我的,您可以清楚地了解node和mysql连接Tanks Grégory,我感谢您抽出时间来帮助我,在以前的测试中,我的代码都在connect函数中,因为我认为这是由于node异步运行它。我刚刚将其恢复到您建议的状态,现在当我运行它时,它在connect函数中不会执行任何操作,完全没有错误,也不会将连接状态写入控制台,因此它永远不会到达该代码行。@DC所以我猜它正在尝试连接,因为它无法成功,它将一直挂起,直到达到连接超时。为了确保这一点,将超时更改为一个小值,如5秒。如果这是超时,您将有一个错误。@GrégoryNEUT谢谢,我尝试了超时,但它对我的代码的运行方式没有任何影响,它似乎仍然不起任何作用,是否有必要逐级检查代码?@GrégoryNEUT我想问题肯定是因为代码正在继续执行,在我的连接和记录集结果返回之前,我如何让它停止并等待它收到这些记录?@D C你可以参考我的样板文件,您可以清楚地了解节点和mysql连接–抱歉here@yogeshagrawal那真的没用,对不起!