【问题标题】:connect ECONNREFUSED - node js , sql连接 ECONNREFUSED - 节点 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。

标签: mysql node.js


【解决方案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】:

      我知道两种解决方法:

      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',});
        

      【讨论】:

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