2

私は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設定にskip-networkingオプションがありません。
PC に XAMPP をインストールしました。以前は、Apache を使用した mysql 接続に 3306 ポートを使用していました。

4

4 に答える 4

5

socketPathの代わりにパラメータを使用してみてください_socket

ここに記載されているようにhttps://github.com/felixge/node-mysql#connection-options

于 2013-11-12T18:47:33.297 に答える
2

MySQLのホスト名/ポート ( localhost/ 3306) とソケット パス ( /var/run/mysqld/mysql.sock) の両方を指定しても意味がありません。一度に使用できるのはいずれか 1 つだけです。インストールに適したものを選択してください。

于 2013-10-27T05:38:41.790 に答える
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

Q: 同じサーバー上の mySQL に接続しようとしていますか (たとえば、MySQL と同じホストに配置された Apache)、または別のリモート ホストから mySQL に接続しようとしていますか?

于 2013-10-27T04:52:49.627 に答える