2012-01-11 144 views
9

我有一个js文件中的下一个代码:连接ECONNREFUSED - 节点JS,SQL

var mysql = require('mysql'); 
var TEST_DATABASE = 'nodejs_mysql_test'; 
var TEST_TABLE = 'test'; 
var client = mysql.createClient({ 
    user: 'root', 
    password: 'root', 
}); 

client.query('CREATE DATABASE '+TEST_DATABASE, function(err) { 
    if (err && err.number != mysql.ERROR_DB_CREATE_EXISTS) { 
    throw err; 
    } 
}); 

但我得到这个错误:

node.js:201 
     throw e; // process.nextTick error, or 'error' event on first tick 
     ^
Error: connect ECONNREFUSED 
    at errnoException (net.js:632:11) 
    at Object.afterConnect [as oncomplete] (net.js:623:18) 

据我了解,这是一个连接问题 - 但我该如何解决它?

(我正在使用Windows 7)

谢谢!

+0

这似乎是出于某种原因,页面认为数据库启动并运行。它在localhost上运行,对吧? – 2012-01-11 19:26:15

+4

明显的问题是:mysql是在同一台机器上运行的,在端口3306上?你可以'telnet localhost 3306'? – seppo0010 2012-01-11 19:26:43

+0

当我在CMD中写入行 telnet localhost 3306 我得到: 'telnet'不被识别为内部或外部命令, 可操作的程序或批处理文件。 这是你的意思吗? – kakush 2012-01-11 19:39:13

回答

17

我知道两种方法来解决这个问题:

  1. mysql.conf,评论skip-networking

  2. 尝试设置插座这样的:

    var client = mysql.createClient({ 
    user: uuuu, 
    password: pppp, 
    host: '127.0.0.1', 
    port: '3306', 
    _socket: '/var/run/mysqld/mysqld.sock',}); 
    
+0

谢谢@limon,'_socket'键将我整理出来! – 2012-03-15 22:42:35

+1

谢谢,评论skip-networking为我工作,但关键没有,这很奇怪。在制作时我宁愿没有这个选项评论! – nak 2012-06-30 07:29:04

+3

+1#跳过网络 – 2013-02-21 21:29:33