我是node.js的新手,并试图学习它。
我已经安装了node-mysql NPM模块。
这里我列出了访问mysql的代码:
// Include http module,
var http = require('http'),
// And mysql module you've just installed.
mysql = require("mysql");
// Create the connection.
// Data is default to new mysql installation and should be changed according to your configuration.
var connection = mysql.createConnection({
user: "root",
password: "",
database: "astitvabmt",
host: '127.0.0.1',
port: '3306',
_socket: '/var/run/mysqld/mysqld.sock'
});
// Create the http server.
http.createServer(function (req, res) {
// Attach listener on end event.
// Query the database.
connection.query('SELECT * FROM tbluser;',function(err, results, fields) {
if (err) throw err;
console.log("sachin : " + results);
var output = '<html><head></head><body><h1>Latest Posts</h1><ul><table border=1><tr>';
for (var index in fields) {
output += '<td>' + fields[index].name + '</td>';
}
output += '</tr>';
for (var index in results) {
output += '<tr><td>' + results[index].Recipe + '</td>';
output += '<td>' + results[index].Amount + '</td>';
output += '<td>' + results[index].Unit + '</td>';
output += '<td>' + results[index].Ingredient + '</td></tr>';
}
output += '</ul></body></html>';
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(output);
});
// Listen on the 8080 port.
}).listen(8080);
console.log('Server mysqlJS running at 8080');
但我得到的错误是:
sachin@ubuntu:/opt/lampp/htdocs/1nodeapp$ node mysql.js
Server mysqlJS running at 8080
Error: connect ECONNREFUSED
at errnoException (net.js:901:11)
at Object.afterConnect [as oncomplete] (net.js:892:19)
--------------------
at Handshake.Sequence (/opt/lampp/htdocs/1nodeapp/node_modules/mysql/lib/protocol/sequences/Sequence.js:15:20)
at new Handshake (/opt/lampp/htdocs/1nodeapp/node_modules/mysql/lib/protocol/sequences/Handshake.js:9:12)
at Protocol.handshake (/opt/lampp/htdocs/1nodeapp/node_modules/mysql/lib/protocol/Protocol.js:42:50)
at Connection.connect (/opt/lampp/htdocs/1nodeapp/node_modules/mysql/lib/Connection.js:72:18)
at Connection._implyConnect (/opt/lampp/htdocs/1nodeapp/node_modules/mysql/lib/Connection.js:182:10)
at Connection.query (/opt/lampp/htdocs/1nodeapp/node_modules/mysql/lib/Connection.js:97:8)
at Server.<anonymous> (/opt/lampp/htdocs/1nodeapp/mysql.js:22:18)
at Server.EventEmitter.emit (events.js:98:17)
at HTTPParser.parser.onIncoming (http.js:2108:12)
at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23)
我的mysql配置中没有跳过网络选项。
我已经在我的PC上安装了XAMPP。以前我使用3306端口进行mysql连接,使用apache。
答案 0 :(得分:5)
尝试使用socketPath
参数代替_socket
。
如此处所述https://github.com/felixge/node-mysql#connection-options
答案 1 :(得分:2)
为MySQL指定主机名/端口(localhost
/ 3306
)和套接字路径(/var/run/mysqld/mysql.sock
)没有意义 - 它只能使用其中一个时间。选择适合您安装的那个。
答案 2 :(得分:0)
“连接被拒绝”套接字错误一般==防火墙阻塞mySQL端口
有问题的端口通常是3306.以下是Windows服务器的说明:
http://www.activeservers.com/page3610203.aspx
以下是Linux服务器的说明:
http://www.cyberciti.biz/tips/linux-iptables-18-allow-mysql-server-incoming-request.html
问:您是否尝试在同一台服务器上连接到mySQL(例如Apache与MySQL共用同一主机),或者您是否尝试从其他远程主机连接到mySQL?
答案 3 :(得分:0)
如果您使用MAMP的默认端口8889,则对我有用。