Node.js 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

我是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)

我试着在本地数据库计算机上运行代码,看看这是否是问题所在,它做了同样的事情,没有连接,也没有错误

任何帮助都将被感激,因为我完全迷失了方向,没有任何错误来指导我,我正在做我认为正确的事情


谢谢

有两种可能性

首先,连接是异步的,您应该等待连接显式结束后再执行其他操作

示例

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那真的没用,对不起!