首页 > 解决方案 > 即使使用 IP 地址,MagicMirror SQL 连接也会出现 ENOTFOUND 错误

问题描述

我正在使用可以在 Github 上找到的 MagicMirror 项目。我添加了 MMM-MysqlQuery 模块。我已将数据库配置添加到配置文件中。但仍然出现 ENOTFOUND 错误。

项目:https ://github.com/MichMich/MagicMirror.git

我已经在树莓派 2 中设置了代码,mysql 数据库在 pi localhost 中。当我使用 pi 终端运行项目时,我得到了 ENOTFOUND 错误。

config: {
  connection: {
   host: "http://192.168.8.100",
   port: 80,
   user: "root",
   password: "123456789",
   database: "mirror"
}

据了解,此配置作为参数传递给 MMM-MysqlQuery 模块的 config.js 文件。它具有数据库连接初始化。

var mysql = require("mysql");

var con = mysql.createConnection({
 host: process.argv[2],
 port: process.argv[3],
 user: process.argv[4],
 password: process.argv[5],
 database: process.argv[6]

});

con.connect(function(err) {
 if (err) throw err;
 con.query(process.argv[7], function(err, result) {
     if (err) throw err;
     console.log(result);
 });
});

我得到的错误是这样的

Whoops! There was an uncaught exception...
{ Error: getaddrinfo ENOTFOUND http://192.168.8.100 
 http://192.168.8.100:80
 at errnoException (dns.js:50:10)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26)
 --------------------
at Protocol._enqueue (/home/pi/MagicMirror/modules/MMM-MysqlQuery/node_modules/mysql/lib/protocol/Protocol.js:144:48)
at Protocol.handshake (/home/pi/MagicMirror/modules/MMM-MysqlQuery/node_modules/mysql/lib/protocol/Protocol.js:51:23)
at Connection.connect (/home/pi/MagicMirror/modules/MMM-MysqlQuery/node_modules/mysql/lib/Connection.js:118:18)
at Class.socketNotificationReceived (/home/pi/MagicMirror/modules/MMM-MysqlQuery/node_helper.js:25:17)
at Socket.<anonymous> (/home/pi/MagicMirror/modules/node_modules/node_helper/index.js:113:11)
at emitTwo (events.js:126:13)
at Socket.emit (events.js:214:7)
at /home/pi/MagicMirror/node_modules/socket.io/lib/socket.js:513:12
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
code: 'ENOTFOUND',
errno: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'http://192.168.8.100',
host: 'http://192.168.8.100',
port: 80,
fatal: true }

如果代码不够,请告诉我。并感谢你们为我提供的任何帮助。

标签: mysqlnode.js

解决方案


http://192.168.8.100不是一个有效的主机名,因为它根本不是一个主机名——它是一个 URL,并且包含 scheme http://,它也不适合数据库连接。

使用简单host: "192.168.8.100"

port: 80您将遇到的下一个错误是不正确的副作用。端口 80 是 HTTP(Web)服务器的标准端口……但您连接的是数据库,而不是 Web 服务器。对于 MySQL,正确的值将是port: 3306除非您的 MySQL 安装使用自定义端口(它不应该)。


推荐阅读