mysql - 即使使用 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 }
如果代码不够,请告诉我。并感谢你们为我提供的任何帮助。
解决方案
http://192.168.8.100
不是一个有效的主机名,因为它根本不是一个主机名——它是一个 URL,并且包含 scheme http://
,它也不适合数据库连接。
使用简单host: "192.168.8.100"
。
port: 80
您将遇到的下一个错误是不正确的副作用。端口 80 是 HTTP(Web)服务器的标准端口……但您连接的是数据库,而不是 Web 服务器。对于 MySQL,正确的值将是port: 3306
除非您的 MySQL 安装使用自定义端口(它不应该)。
推荐阅读
- css - 有没有办法在 Edge 浏览器中获取 xpath 和 css?
- mysql - MySQL为两列选择“不同/唯一”记录
- python - 显示包含图形对象的熊猫数据框
- c - C 中的 OOP。类的默认值
- android - 尝试在空对象引用上调用虚拟方法“void android.widget.ImageButton.setOnClickListener”
- karate - 比较 json 对象时包含抛出异常
- javascript - $("#win").data("kendoWindow") 未定义
- flutter - 应用程序终止时是否可以运行代码?
- python - sklearn_crfsuite ImportError: DLL load failed: 找不到指定的模块
- c# - NLog/ SQLite 与 .NET Core