gpt4 book ai didi

mysql - 无法通过 Nodejs 连接到 MySQL

转载 作者:行者123 更新时间:2023-11-29 07:54:39 26 4
gpt4 key购买 nike

我已经安装了 Node.js,如下所示:

root@server1:~#apt-get install nodejs

然后安装npm如下:

root@server1:~#apt-get install npm

然后在服务器目录中安装MySQL模块,如下所示:

root@server1:~#cd /var/www/
root@server1:/var/www# npm install mysql

下面是node.js服务器(server.js)的代码(使用正确的凭据而不是xxx):

var mysql = require('mysql');

var db_config = {
host : 'localhost',
user : 'xxx',
password : 'xxx',
database : 'xxx'
};

var connection;

function handleDisconnect(){

connection = mysql.createConnection(db_config);


connection.connect(function(err) {
if(err) {
console.log('error when connecting to db:', err);
setTimeout(handleDisconnect, 2000);
}
});

connection.on('error', function(err) {
console.log('db error', err);
if(err.code === 'PROTOCOL_CONNECTION_LOST') {
handleDisconnect();
}
else{
throw err;
}
});
}

handleDisconnect();

当我运行 Node.js 服务器时,如下所示:

root@server1:~#node /var/www/server.js

我收到一般错误!如下:

error when connecting to db: { [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
fatal: true }

更新:

我能够从 PHP (Apache2) 连接到 MySQL,并且 MySQL 在我的 Ubuntu 12.04 服务器上运行良好,如下所示:

root@server1:~# netstat -ltnp | grep 3306

输出:

tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      556/mysqld

请问您如何解决这个问题? Node.js 正在不同的服务器上工作,但我不知道为什么它在这里不起作用!

谢谢。

最佳答案

您需要将socket path的值添加到db_config对象:

db_config.socketPath =  '/var/run/mysqld/mysqld.sock'

例如,在 MAMP 中,您可以转到 http://localhost:8888/MAMP ,你会发现:

/Applications/MAMP/tmp/mysql/mysql.sock

最后你有:

var connection = mysql.createConnection({
host : db_config.host,
user : db_config.user,
password : db_config.pass,
database : db_config.db,
socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock'
});

关于mysql - 无法通过 Nodejs 连接到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25485075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com