我是Node新手并且已经使用它一个多星期了,一切都很好,直到我尝试连接到MySQL数据库并且我没有运气。
我已经安装了必要的文件;
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)。
我尝试在本地数据库计算机上运行代码以查看是否存在问题并且它做了同样的事情,没有连接且没有错误。
任何帮助都会受到赞赏,因为我完全迷失了没有任何错误来指导我,我正在做我认为正确的事情!
由于
答案 0 :(得分:2)
有两种可能性。
首先,连接是异步的,你应该等待连接显式结束以做其他事情。
示例:
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
更改超时。
第二种可能性是它实际连接,因为你没有console.log
告诉你你不知道。我向您介绍我之前向您描述的异步问题。