无法通过node.js/express连接到mysql

zwghvu4y  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(490)

我有一个简单的web托管帐户,最近升级到在服务器上启用node.js。我可以用php连接mysql,执行查询。但我正在尝试用node.js构建一个小应用程序,而连接到mysql似乎是不可能的。有人能告诉我我做错了什么吗?节点示例似乎只是一致地运行一个脚本路径。它给了我26515的端口,如果我运行一个较小的程序,我就可以使用这个端口。

Restarting /home/www/tannerbabcock.com/app/sql.js.
{ Error: connect EACCES 127.0.0.1:3306 - Local (0.0.0.0:0)
    at Object._errnoException (util.js:992:11)
    at _exceptionWithHostPort (util.js:1014:20)
    at internalConnect (net.js:960:16)
    at defaultTriggerAsyncIdScope (internal/async_hooks.js:284:19)
    at GetAddrInfoReqWrap.emitLookup [as callback] (net.js:1106:9)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:97:10)
    --------------------
    at Protocol._enqueue (/home/www/tannerbabcock.com/node_modules/mysql/lib/protocol/Protocol.js:144:48)
    at Protocol.handshake (/home/www/tannerbabcock.com/node_modules/mysql/lib/protocol/Protocol.js:51:23)
    at Connection.connect (/home/www/tannerbabcock.com/node_modules/mysql/lib/Connection.js:118:18)
    at app.get (/home/www/tannerbabcock.com/app/sql.js:15:13)
    at Layer.handle [as handle_request] (/home/www/tannerbabcock.com/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/www/tannerbabcock.com/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/home/www/tannerbabcock.com/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/home/www/tannerbabcock.com/node_modules/express/lib/router/layer.js:95:5)
    at /home/www/tannerbabcock.com/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/home/www/tannerbabcock.com/node_modules/express/lib/router/index.js:335:12)
code: 'EACCES',
errno: 'EACCES',
syscall: 'connect',
address: '127.0.0.1',
port: 3306,
fatal: true }

这是我的密码。这个 node_modules 与此文件不在同一目录中( /home/www/tannerbock.com/app/sql.js ),但它在父目录中( /home/www/tannerbock.com/node_modules ). 我只想让这个程序输出我的“blog”表的内容。

var express = require("express"),
    mysql = require("mysql");
    app = express();

app.use(express.static("public"));

var connection = mysql.createConnection({
    host: "localhost",
    user: "my_username",
    password: "my_password",
    database: "my_database"
});

app.get("/", (req, res) => {
    connection.connect((err, conn) => {
        if (err) {
            return console.error(err);
        }
    });

    connection.query("SELECT * FROM `blog`", (err, rows, fields) => {
        if (err) {
            return console.error(err.message);
        }
        res.write("<html><head><title>Node.js App</title></head><body><table><tbody>");
        for (var i = 0; i < rows.length; i++) {
            res.write("<tr><td>" + rows[i].id + "</td><td>" + rows[i].title + "</td><td>" + rows[i].body + "</td><td>" + rows[i].tag + "</td><td>" + rows[i].comp + "</td></tr>");
        }
        res.end("</tbody></table></body></html>");
    });

    connection.end();
});

var server = app.listen(26515, "198.23.49.48");

我一直在关注mysql node.js的例子,但是没有一个能真正帮助我。

wvyml7n5

wvyml7n51#

我认为问题在于异步。您正在发送查询,但未获得连接。在连接的回调中检索连接。用这种方法你还没有联系。
像这样的方法可能有用:

app.get("/", (req, res) => {
connection.connect((err) => {
    if (err) {
        return console.error(err);
    }

  connection.query("SELECT * FROM `blog`", (err, rows, fields) => {
    if (err) {
        return console.error(err.message);
    }
        res.write("<html><head><title>Node.js App</title></head><body><table><tbody>");
        for (var i = 0; i < rows.length; i++) {
            res.write("<tr><td>" + rows[i].id + "</td><td>" + rows[i].title + "</td><td>" + rows[i].body + "</td><td>" + rows[i].tag + "</td><td>" + rows[i].comp + "</td></tr>");
        }
        res.end("</tbody></table></body></html>");
    });

    connection.end();

  });
});

var server = app.listen(26515, "198.23.49.48");

相关问题