Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 连接到Node.js上的MySQL未初始化_Javascript_Mysql_Node.js_Node Mysql - Fatal编程技术网

Javascript 连接到Node.js上的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

我无法连接到MySQL数据库。我在谷歌上搜索了一些解决方案,但似乎都不管用,或者我还没有理解它们。以下是设置:

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