【问题标题】:Unable to connect to MySql server from Node.js无法从 Node.js 连接到 MySql 服务器
【发布时间】:2019-09-29 22:19:48
【问题描述】:

我是 MySQL 新手,似乎无法从 Node.js 连接到服务器。另外,我使用的是 Windows,而不是 UNIX。

我可以使用 sqlcmd 连接到服务器,登录到我为节点创建的用户。我还启用了 TCP/IP 和命名管道。

const express = require("express");
const mysql = require("mysql");

const app = express();
const sqlServer = mysql.createConnection({
    server: "127.0.0.1",
    port: "1433",
    user: "MeetMe",
    password: "dOI9Zham1f5xOJAvweUIvuWlc"
});

const SELECT_ALL_QUERY = "SELECT * FROM Accounts";

sqlServer.connect(function(err) {
    console.log("Connected to sql server");
    if (err) throw err;
});

app.get("/", (req, res) => {
    sqlServer.query(SELECT_ALL_QUERY, function(err, results, fields) {
        if (err) throw err;
        console.log(results);
    });
    res.send("Hello world");
});

app.listen(4000);
console.log("Server running on port 4000");

程序在 sqlServer.connect() 期间总是抛出错误。

C:\dev\Webapps\meet-me\server.js:16
    if (err) throw err;
             ^

Error: read ECONNRESET
    at TCP.onStreamRead (internal/stream_base_commons.js:111:27)
    --------------------
    at Protocol._enqueue (C:\dev\Webapps\meet-me\node_modules\mysql\lib\protocol\Protocol.js:144:48)
    at Protocol.handshake (C:\dev\Webapps\meet-me\node_modules\mysql\lib\protocol\Protocol.js:51:23)
    at Connection.connect (C:\dev\Webapps\meet-me\node_modules\mysql\lib\Connection.js:119:18)
    at Object.<anonymous> (C:\dev\Webapps\meet-me\server.js:14:11)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)

【问题讨论】:

  • @Avanthika 我看到了这个,但我认为这不是问题,除非我误解了连接方法。我没有记录“连接到 SQL 服务器”,所以我不相信连接已经完成,所以它不会空闲。我也无法使用当前设置进行查询。就好像它正在尝试连接但几分钟后超时。

标签: mysql node.js


【解决方案1】:

MySQL 的默认端口号是 3306。

您的 createConnection 选项对象提到端口 1433。这是 Microsoft SQL 服务器的默认端口。尝试从该对象中删除端口元素。或者,如果这不起作用,请将其更改为 3306。

【讨论】:

  • 如果我这样做,我会立即得到 ECONNREFUSED。此外,如果您能解释将不胜感激的差异。我一直很困惑为什么在我阅读的不同内容中引用了 2 个不同的端口。
【解决方案2】:

我意识到 MicrosoftSQL 和 MySQL 是有区别的。感谢所有试图提供帮助的人!

【讨论】:

    猜你喜欢
    • 2019-02-26
    • 2014-06-28
    • 2015-08-01
    • 1970-01-01
    • 2016-09-10
    • 2015-05-10
    • 2012-11-03
    相关资源
    最近更新 更多