Javascript 连接到Node.js上的MySQL未初始化
我无法连接到MySQL数据库。我在谷歌上搜索了一些解决方案,但似乎都不管用,或者我还没有理解它们。以下是设置:Javascript 连接到Node.js上的MySQL未初始化,javascript,mysql,node.js,node-mysql,Javascript,Mysql,Node.js,Node Mysql,我无法连接到MySQL数据库。我在谷歌上搜索了一些解决方案,但似乎都不管用,或者我还没有理解它们。以下是设置: let express = require("express"); let mysql = require("mysql"); let http = require("http"); let app = express(); http.createServer(app).listen(8000, function() { console.log("Listenin
let express = require("express");
let mysql = require("mysql");
let http = require("http");
let app = express();
http.createServer(app).listen(8000, function() {
console.log("Listening on http://localhost:" + port)
});
var connection = mysql.createConnection({
host: "127.0.0.1",
user: "root",
password: process.env.DB_PASSWORD,
database: "users",
port: 8000
});
connection.connect();
connection.query("SELECT * FROM user", function(err, rows, fields)
{
if (err) {
console.error("error connecting: " + err.stack);
return;
}
console.log(rows[0]);
});
connection.end();
尝试使用“socketPath”和其他端口设置连接,但均返回错误:
Error: connect ECONNREFUSED 127.0.0.1:3306
at Object.exports._errnoException (util.js:1034:11)
at exports._exceptionWithHostPort (util.js:1057:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1099:14)
--------------------
at Protocol._enqueue (/vagrant/node_modules/mysql/lib/protocol/Protocol.js:141:48)
at Protocol.handshake (/vagrant/node_modules/mysql/lib/protocol/Protocol.js:52:41)
at Connection.connect (/vagrant/node_modules/mysql/lib/Connection.js:130:18)
at Object.<anonymous> (/vagrant/app.js:12:12)
at Module._compile (module.js:571:32)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
我对使用MySQL连接节点非常陌生,所以我可能做的都是错的,但我不知道问题出在哪里请更改您的
连接。connect()
连接到
connection.connect(function(err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;
}
console.log('connected as id ' + connection.threadId);
});
所以你可以看到错误
编辑:
检查mysql配置文件(
/etc/mysql/my.cnf
)中的绑定地址
和端口
)。如果您的mysql服务器在主机环境中运行,而节点在来宾环境中运行(任何类似docker的虚拟化),请将mysql服务器设置为在您的本地ip上侦听(eth0,如192.168.0.x),并在节点配置中使用相同的地址更改您的连接
connection.connect(function(err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;
}
console.log('connected as id ' + connection.threadId);
});
所以你可以看到错误
编辑:
检查mysql配置文件(/etc/mysql/my.cnf
)中的绑定地址
和端口
)。如果您的mysql服务器在主机环境中运行,而节点在来宾环境中运行(任何类似docker的虚拟化),请将mysql服务器设置为在本地ip上侦听(eth0,比如192.168.0.x),并在节点配置中使用与原来相同的地址,我有点愚蠢。我在一个流浪服务器(虚拟服务器)上运行应用程序,并试图连接到本地服务器。当我尝试连接到流浪者服务器时,一切正常。我也没有在我的流浪者机器上正确安装mysql服务器。事实证明,我有点愚蠢。我在一个流浪服务器(虚拟服务器)上运行应用程序,并试图连接到本地服务器。当我尝试连接到流浪者服务器时,一切正常。我也没有将mysql服务器正确安装到我的vagrant机器上。如果您没有设置端口或将其设置为mysql默认端口,即3306,它工作正常
var connection = mysql.createConnection({
host: "127.0.0.1",
user: "mysqluser",
password: 'password',
database: "yourdatabase"
});
我不知道确切的原因(虽然我尝试了不同的端口),为什么它没有在不同的端口上运行,但下面是一个示例,演示了如何使用不同的端口号连接mysql
仅供参考:您正在将应用程序设置为在8000和mysql端口上运行
在你的应用中使用的是8000。你必须将其更改为其他内容
如果您没有设置端口或将其设置为mysql默认端口,即3306,则可以正常工作
var connection = mysql.createConnection({
host: "127.0.0.1",
user: "mysqluser",
password: 'password',
database: "yourdatabase"
});
我不知道确切的原因(虽然我尝试了不同的端口),为什么它没有在不同的端口上运行,但下面是一个示例,演示了如何使用不同的端口号连接mysql
仅供参考:您正在将应用程序设置为在8000和mysql端口上运行
在你的应用中使用的是8000。你必须将其更改为其他内容
适用于使用MAMP的MAC用户
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "root",
database: "databasename",
socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock'
});
socketPath指向MAMP“mysql.sock”以允许NodeJS/mysql连接
注:上述连接还解决了“错误:连接ECONREFUSSED 127.0.0.1:3306”
我希望这对其他人有所帮助。适用于使用MAMP的MAC用户
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "root",
database: "databasename",
socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock'
});
socketPath指向MAMP“mysql.sock”以允许NodeJS/mysql连接
注:上述连接还解决了“错误:连接ECONREFUSSED 127.0.0.1:3306”
我希望这对其他人有所帮助。您必须设置socketPath,在运行脚本之前,请确保您的MAMP是否正在运行
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "root",
socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock'
});
必须设置socketPath,在运行脚本之前,确保MAMP是否正在运行
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "root",
socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock'
});
删除端口
键值(端口:8000)和socketPath
,如果添加,
从sql配置,然后重试
var connection = mysql.createConnection({
host: "127.0.0.1",
user: "root",
password: "root",
database: "users"
});
实际上,节点服务器占用了8000个端口,所以不能将同一端口分配给不同的进程
第二个mysql正在端口3306上运行。所以你不能通过不同的端口连接mysql
您可以为mysql使用不同的端口,但可以通过某种代理传递机制或在特定端口上运行mysql本身。删除您的端口
键值(端口:8000)和socketPath
,如果您添加,
从sql配置,然后重试
var connection = mysql.createConnection({
host: "127.0.0.1",
user: "root",
password: "root",
database: "users"
});
实际上,节点服务器占用了8000个端口,所以不能将同一端口分配给不同的进程
第二个mysql正在端口3306上运行。所以你不能通过不同的端口连接mysql
您可以为mysql使用不同的端口,但可以通过某种代理传递机制或在特定端口上运行mysql本身。从Xampp控制面板启动mysql服务器从Xampp控制面板启动mysql服务器在本例中没有提到Xampp正在使用。没有提到Xampp正在使用中这个案子,我也有同样的问题。谢谢:)我也有同样的问题。谢谢:)很高兴听到这个消息。如果我没有使用MAMP呢。我想它也应该适用于像XAMPP这样的服务器。虽然我从来没有做过测试。另外,如果您想用XAMPP测试它,请不要忘记修改socketPathGood来了解这一点。如果我没有使用MAMP,该怎么办?我想它也应该适用于像XAMPP这样的服务器。虽然我从来没有做过测试。另外,如果您想用XAMPP测试一下,请不要忘记修改socketPath