【发布时间】:2019-01-26 05:47:26
【问题描述】:
美好的一天!
我正在尝试使用 Node JS 连接到 MySQL 数据库。我 npm id mysql 并将其包含在我的文件顶部。当我运行我的代码时,我什么也得不到。我确实控制台在脚本末尾记录了连接,这给了我一个有效的连接模型作为回报。我似乎从来没有达到 .connect 中的功能,也没有查询或 ping。
当我连接到 localhost(运行 Wamp 服务器)时,连接成功并且我检索了一些控制台日志。我尝试连接到第二个外部数据库,但出现了同样的错误。
我收到的错误:
ETIMEDOUT。在 Connection_handleConnectTimeout。握手时protocol.js中的错误是致命的。 (我省略了一些文字)。
我安装了最新的 mysql 模块。
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'MY_HOST_IP',
database: 'MY_HOST_DB',
user: 'MY_HOST_USR',
password: 'MY_PW'
});
connection.connect(function (err) {
console.log('conecting');
if (err) {
console.error('Error connecting: ' + err.stack);
}
console.log('Connected as id ' + connection.threadId);
});
connection.query('SELECT * from accounts', function (error, results, fields) {
if (error) console.log(error);
console.log('account ', results[0]);
});
connection.ping(function (error) { console.log('pingerror'); });
编辑:
上述代码在连接到两个外部托管数据库之一(使用它们的 IP 地址)时超时。这些数据库的主人说设置没有问题。 我尝试从 127.0.0.1:22005 连接到数据库,也许有问题? 当我将上面的代码放在一个独立的 JS 文件中并在我的命令行中使用 node 运行它时,它会连接。
【问题讨论】:
-
用 ip 代替 localhost 试试。
-
喜欢 127.0.0.1 而不是 localhost?
-
是的,或者机器的网络IP。两个都试试
-
这很奇怪。如果我将 127.0.0.1 作为主机,它也会超时......我需要设置一些标志吗?编辑:如果我把 127.0.0.1 作为 localAddress 它工作。当我将我的外部数据库主机 (IP) 作为 localAddress 时,我显然让用户不允许访问本地主机。那我应该把什么作为主持人呢。
-
现在在手机上将在明天发布解决方案。