连接 ECONNREFUSED - 节点 js , sql

Posted

技术标签:

【中文标题】连接 ECONNREFUSED - 节点 js , sql【英文标题】:connect ECONNREFUSED - node js , sql 【发布时间】:2012-02-08 04:00:52 【问题描述】:

我在 js 文件中有下一段代码:

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)

谢谢!!

【问题讨论】:

似乎出于某种原因页面认为数据库已启动并正在运行。它在本地主机上启动并运行,对吧? 显而易见的问题:mysql 是否在同一台机器上运行,在端口 3306 上?你能telnet localhost 3306吗? 当我在 CMD 中写入 telnet localhost 3306 行时,我得到:'telnet' 不被识别为内部或外部命令、可运行程序或批处理文件。是这个意思吗? @user1087995:seppo0010 的意思是,根据您使用的连接设置,您是否绝对确定在本地计算机上运行 MySQL 服务器并在端口 3306 上进行侦听?此错误表明您正在尝试连接到未侦听的服务器。 即使它在本地机器上运行,您也需要确保 MySQL 正在侦听 localhost/127.0.0.1 而不仅仅是外部 IP。 【参考方案1】:

尝试修复您在 mysql 和 Node.js 脚本中定义的端口。 你可以在mysql目录下的*.cnf文件中定义mysqld端口, 当您在 Node.js 脚本中连接到 MySQL 时,您可以定义该端口。

cnf 文件中有这样的东西

port = 3360

【讨论】:

【参考方案2】:

MySQL 服务器未运行时出现此错误。

我通过 MySQL.PrefPane 中的 Initialize Database(OS X 上 MySQL 的系统偏好设置工具)更改了我的配置 - 以使用旧密码加密 - 以修复 ER_NOT_SUPPORTED_AUTH_MODE。 此配置更改停止了 MySQL 服务器,然后当我尝试从 node.js 连接到 MySQL 时,我得到了 ECONNREFUSED。

已通过从 MySQL 系统偏好设置工具重新启动 MySQL 服务器修复。

【讨论】:

【参考方案3】:

我知道两种解决方法:

    mysql.conf,评论skip-networking

    尝试这样设置套接字:

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

【讨论】:

谢谢,评论skip-networking对我有用,但关键没有,这很奇怪。在生产中,我宁愿不评论该选项! 这是被匿名用户拒绝的编辑:我遇到了同样的问题,所以我只是插入了我解决问题的方法。确保在 mysql 配置文件(/etc/mysql/ my.cnfmysql.conf)中有正确的绑定地址。下面是一个例子,说明在这种情况下应该写什么:bind-address = 127.0.0.1 我不知道为什么,但只有这对我有用:***.com/a/20486467/2413469 在 2.1.0 版本中,您应该使用 socketPath 而不是 _socket

以上是关于连接 ECONNREFUSED - 节点 js , sql的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 错误:连接 ECONNREFUSED

Node.js MySQL - 错误:连接 ECONNREFUSED

node.js 错误:连接 ECONNREFUSED;来自服务器的响应

获取请求失败并出现错误:连接 ECONNREFUSED

Heroku + MongoLab 插件与 Node.js 应用程序的连接错误 - 错误:连接 ECONNREFUSED 127.0.0.1:27017

node.js mysql错误:ECONNREFUSED