node.js mysql连接未连接,但未显示任何错误

6ioyuze2  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(309)

我是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)。
我试着在本地数据库计算机上运行代码,看看这是否是问题所在,它做了同样的事情,没有连接,也没有错误。
任何帮助都会很感激,因为我完全迷失了方向,没有任何错误来指导我,我正在做我认为正确的事情!
谢谢

soat7uwm

soat7uwm1#

有两种可能。
首先,连接是异步的,您应该等待连接显式结束才能执行其他操作。
例子:

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 告诉你你不知道。我让您参考我刚才向您描述的异步问题。

相关问题