errorError:getaddrinfo ENOTFOUND - mysql

Nat*_*han 7 json node.js

我正在使用Node.js在c9.io上运行服务器并尝试连接到Mysql我想我得到了这个错误:

错误:getaddrinfo ENOTFOUND

因为与db的连接是错误的.

我正在使用这个:

var connection = mysql.createConnection({
    host: "REMOTE_ADDR",
    user: "MYUSERNAME", // this is replaced by my username
    database: "c9",
    port: 3306
});
Run Code Online (Sandbox Code Playgroud)

知道什么是错的吗?

谢谢!

Sco*_*aph 10

我知道已经有一段时间了,但是我今天花了很多时间试图解决这个问题.要检查的内容:

在您的nodejs源中:

  • 尝试没有'port'选项,除非在您的db VM上,MySQL正在侦听除3306之外的端口.我已指定此选项但在删除之前存在连接问题.并且3306已经是该选项的默认值.
  • 尝试使用主机'选项'中的实际主机IP.我使用的是一个实际的域名,而且通常情况下,node-mysql会抛出相同的"errorError:getaddrinfo ENOTFOUND"当我使用IP地址时,不再有错误.此外,我在AWS中的Ubuntu实例上没有收到此错误.当我切换到Azure中的Ubuntu VM时,我遇到了问题.
  • 将"debug"连接选项设置为true,这将为您提供连接期间发生的详细跟踪

在您的db VM/Box/Instance上:

  • 确保MySQL正在侦听正确的端口
  • 如果您在尝试使用池进行并发连接时看到错误,请检查您的max_connections和max_user_connections是否已从my.conf中的默认设置更改
  • 监控"SHOW PROCESSLIST;" 在MySQL中看看你是否看到任何问题


Joã*_*ira 8

一个小时后,我不知道为什么,我发现了这个问题.

在我的情况下,我更换了

host: 'localhost'
Run Code Online (Sandbox Code Playgroud)

通过

host: '127.0.0.1'
Run Code Online (Sandbox Code Playgroud)


dan*_*est 5

这段代码对我有用。

var mysql = require('mysql');

var con = mysql.createConnection({
    host: '127.0.0.1',
    port: '3306',
    user: 'yourUsername',
    password: '**********'
});

con.connect(function(err){
    if(err) throw err;
    console.log('connected!');
});
Run Code Online (Sandbox Code Playgroud)

主机名和端口名可以在您的 mysql 服务器中找到它们。您可以使用“localhost”代替“127.0.0.1”