我有一个简单的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的例子,但是没有一个能真正帮助我。
1条答案
按热度按时间wvyml7n51#
我认为问题在于异步。您正在发送查询,但未获得连接。在连接的回调中检索连接。用这种方法你还没有联系。
像这样的方法可能有用: