【问题标题】:Nodejs node-mysql module not connecting to databaseNodejs node-mysql模块未连接到数据库
【发布时间】:2013-02-13 13:12:13
【问题描述】:

我正在运行这个脚本:

var mysql      = require('mysql');

var connection = mysql.createConnection("mysql://localhost/");

connection.connect();
console.log(connection)

但是出现错误...

{ config: 
   { host: 'localhost',
     port: 3306,
     socketPath: undefined,
     user: undefined,
     password: undefined,
     database: '',
     insecureAuth: false,
     supportBigNumbers: false,
     debug: undefined,
     timezone: 'local',
     flags: '',
     queryFormat: undefined,
     pool: undefined,
     typeCast: true,
     maxPacketSize: 0,
     charsetNumber: 33,
     clientFlags: 193487 },
  _socket: 
   { _handle: 
      { writeQueueSize: 0,
        owner: [Circular],
        onread: [Function: onread] },
     _pendingWriteReqs: 0,
     _flags: 0,
     _connectQueueSize: 0,
     destroyed: false,
     errorEmitted: false,
     bytesRead: 0,
     _bytesDispatched: 0,
     allowHalfOpen: undefined,
     _connecting: true,
     writable: true,
     _events: 
      { data: [Function: ondata],
        end: [Object],
        close: [Object],
        error: [Object],
        drain: [Function: ondrain] } },
  _protocol: 
   { readable: true,
     writable: true,
     _config: 
      { host: 'localhost',
        port: 3306,
        socketPath: undefined,
        user: undefined,
        password: undefined,
        database: '',
        insecureAuth: false,
        supportBigNumbers: false,
        debug: undefined,
        timezone: 'local',
        flags: '',
        queryFormat: undefined,
        pool: undefined,
        typeCast: true,
        maxPacketSize: 0,
        charsetNumber: 33,
        clientFlags: 193487 },
     _connection: [Circular],
     _callback: null,
     _fatalError: null,
     _quitSequence: null,
     _handshakeSequence: 
      { _callback: undefined,
        _ended: false,
        _callSite: '    at Handshake.Sequence (/usr/local/lib/node_modules/mysql/lib/protocol/sequences/Sequence.js:15:21)\n    at new Handshake (/usr/local/lib/node_modules/mysql/lib/protocol/sequences/Handshake.js:9:12)\n    at Protocol.handshake (/usr/local/lib/node_modules/mysql/lib/protocol/Protocol.js:41:50)\n    at Connection.connect (/usr/local/lib/node_modules/mysql/lib/Connection.js:63:18)\n    at Object.<anonymous> (/Users/itaccess/Desktop/test.js:5:12)\n    at Module._compile (module.js:449:26)\n    at Object.Module._extensions..js (module.js:467:10)\n    at Module.load (module.js:356:32)\n    at Function.Module._load (module.js:312:12)\n    at Module.runMain (module.js:492:10)',
        _config: [Object],
        _handshakeInitializationPacket: null,
        _events: [Object] },
     _destroyed: false,
     _queue: [ [Object] ],
     _handshakeInitializationPacket: null,
     _parser: 
      { _supportBigNumbers: false,
        _buffer: <Buffer >,
        _longPacketBuffers: [],
        _offset: 0,
        _packetEnd: null,
        _packetHeader: null,
        _onPacket: [Function],
        _nextPacketNumber: 0,
        _encoding: 'utf-8',
        _paused: false },
     _events: 
      { drain: [Object],
        error: [Object],
        end: [Object],
        close: [Object],
        data: [Function: ondata],
        unhandledError: [Function] } },
  _connectCalled: true }
{ [Error: connect ECONNREFUSED]
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect',
  fatal: true }

而控制台中的这个错误...

/Users/itaccess/Desktop/test.js:10
  if (err) throw err;
                 ^
Error: connect ECONNREFUSED
    at errnoException (net.js:769:11)
    at Object.afterConnect [as oncomplete] (net.js:760:19)
    --------------------
    at Handshake.Sequence (/usr/local/lib/node_modules/mysql/lib/protocol/sequences/Sequence.js:15:21)
    at new Handshake (/usr/local/lib/node_modules/mysql/lib/protocol/sequences/Handshake.js:9:12)
    at Protocol.handshake (/usr/local/lib/node_modules/mysql/lib/protocol/Protocol.js:41:50)
    at Connection.connect (/usr/local/lib/node_modules/mysql/lib/Connection.js:63:18)
    at Object.<anonymous> (/Users/itaccess/Desktop/test.js:5:12)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)

我确定不需要用户名/密码,并且我也尝试过各种密码,我也确信。我尝试使用对象来设置设置和查询字符串。我已经尝试显式添加端口,无论如何这是默认端口。

为什么连接不上?

【问题讨论】:

  • 你能从控制台用mysql命令行客户端连接吗? mysql -h localhost ⏎
  • 你能告诉我们它在控制台中打印的错误是什么吗?
  • @kobe 它位于 JSON 输出的底部,我已将其分开以便于查看

标签: javascript mysql node.js


【解决方案1】:

您需要设置套接字路径。

var mysql      = require('mysql');
var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    password : 'password',
    socketPath  : '/var/run/mysqld/mysqld.sock',
});

【讨论】:

  • 这个解决方案对我有用。它曾经在没有 socketPath 的情况下为我工作,但在我移动服务器后停止但设置 socketPath 使其再次工作
【解决方案2】:

试试这样的,我想你肯定需要登录名和密码

一些示例代码

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
  if (err) throw err;

  console.log('The solution is: ', rows[0].solution);
});

connection.end();

【讨论】:

  • 嗯,这是我尝试的第一件事,但它不起作用。
  • 你能检查这两个链接他们有类似的问题stackoverflow.com/questions/4523459/…
  • 第一个链接将我整理出来。我预计这是一个 nodejs 问题,但 mysql 在网络上无法访问。我预计 php 是通过网络访问的,但显然不是。这是解决我问题的答案。谢谢:stackoverflow.com/a/9606656/665261
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
相关资源
最近更新 更多