![](/img/trans.png)
[英]Node.JS/MySQL - Error: connect ECONNREFUSED - happening at random
[英]Node.js MySQL - Error: connect ECONNREFUSED
我使用 Node.js 服務器端。 我在本地主機上嘗試了我的代碼,一切正常。 我購買了一台服務器並在其上安裝了 Apache 和 node.js 並在那里測試了我的 Web 應用程序。 我正確地將 MySQL 連接配置從 localhost 更改為服務器配置。
我使用以下配置測試我的 Web 應用程序:
var mysql = require('mysql');
var mysqlConnection;
function new_mysqlConnection() {
mysqlConnection = mysql.createConnection({
host : 'myurl.at',
user : 'myusername',
database : 'mydatabase',
password : 'mypassword'
});
}
我使用以下命令啟動 node.js 服務器:
$ node server.js
當我加載頁面時,它正確顯示,但是當 Node.js 嘗試連接到數據庫時,我總是收到以下錯誤:
Error: connect ECONNREFUSED
at errnoException (net.js:905:11)
at Object.afterConnect [as oncomplete] (net.js:896:19)
--------------------
at Protocol._enqueue (/var/www/node_modules/mysql/lib/protocol/Protocol.js:135:48)
at Protocol.handshake (/var/www/node_modules/mysql/lib/protocol/Protocol.js:52:41)
at Connection.connect (/var/www/node_modules/mysql/lib/Connection.js:119:18)
at reconnectDb (/var/www/server.js:319:18)
at app.get.email (/var/www/server.js:109:2)
at Layer.handle [as handle_request] (/var/www/node_modules/express/lib/router/layer.js:82:5)
at trim_prefix (/var/www/node_modules/express/lib/router/index.js:302:13)
at /var/www/node_modules/express/lib/router/index.js:270:7
at Function.proto.process_params (/var/www/node_modules/express/lib/router/index.js:321:12)
at next (/var/www/node_modules/express/lib/router/index.js:261:10)
您需要將socket path
的值添加到配置對象中:
socketPath: '/var/run/mysqld/mysqld.sock'
在 MAMP 中,您轉到http://localhost:8888/MAMP ,您會發現:
/Applications/MAMP/tmp/mysql/mysql.sock
最后你有:
var connection = mysql.createConnection({
host : config.host,
user : config.user,
password : config.pass,
database : config.db,
socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock'
});
檢查服務器中的 MySQL 端口。
在 MAMP 中,默認情況下它使用 8889。
將其添加到您的連接配置中。
您的 MySQL 配置應如下所示。
this.pool = mysql.createPool({
connectionLimit: 10,
host: 'localhost',
user: 'root',
password: 'root',
database: 'todo',
port: '8889'
});
檢查您的 xampp 服務器 mysql 是否正在運行
我遇到了同樣的問題,但我通過更改解決了這個問題
host: 'localhost'
到
host: '127.0.0.1'
經過兩天的努力,我通過以下代碼修復了它。 (只是給出我的解決方案,您可能還有其他解決方案。)
也請按照以下步驟操作。
const sequelize = new Sequelize("test", "root", "root", { host: "127.0.0.1", dialect: "mysql", port: "8889", connectionLimit: 10, socketPath: "/Applications/MAMP/tmp/mysql/mysql.sock" });
注意:我正在使用帶有 graphql (NODEJS) 的 sequelize。
我建議在您的下表中添加端口;
const pool=mysql.createPool({
host: '127.0.0.1',
user: 'root',
database: 'node-complete',
port: "3307",
password: 'Aditya2000#'
});
端口號將從 MySql Workbench 的主頁表中獲取,該表應顯示:
本地實例 MySql 根 localhost: 3307 -> 這個 localhost 號必須寫在那里。
在大多數情況下,您的主機應與 MySQL 配置文件中的綁定地址匹配。 如果您的綁定地址是 0.0.0.0 或 127.0.0.1,那么將主機設置為 'localhost' 應該可以工作。 但是如果您的綁定地址是您的實際 IP 地址,那么您應該添加您的 IP 地址。
var sql_con = mysql.createConnection({
host: "ip address",// should be the same as bind-address
user: "jeffery",
password: "damnthing",
database: "KOKATOOO"
});
我遇到了同樣的問題,結果 mysql 沒有運行。 確保它正在運行:
$ systemctl status mysqld
如果你看到這個:
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: failed (Result: start-limit) since Tue 2020-08-18 12:12:29 CDT; 32min ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 18668 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=2)
Process: 18650 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 18668 (code=exited, status=2)
Status: "SERVER_BOOTING"
然后服務沒有運行,運行輸入:
$ systemctl start mysqld
我在使用 nginx 的谷歌雲中也有同樣的問題
改變了
host: 'localhost'
到
host : 'cloud_instance_private_ip'
可能會幫助一些有同樣問題的人
這可能是因為沒有端口和數據庫。 首先我寫道:主機、用戶、密碼並且沒有數據庫和端口。
在這里您需要指定您的數據庫名稱是什么,您的端口號是什么。 所以總數必須是:1.主機 2.用戶 3.密碼 4.數據庫 5.端口
它對我有用,如果它對你也有用,請嘗試一下。
我也有同樣的問題,但我通過添加找到了解決方案: port:"80" I connect with node.js to the server php mysql using this code:
var mysql=require('mysql');`
var connection=mysql.createConnection({
port:"80",
host:"localhost",
user:"root",
password:""
});
從搜索欄中打開服務。在那里搜索 MySQL80。右鍵單擊它並單擊開始。現在運行代碼。它應該可以工作。大多數情況下,計算機啟動時 SQL 服務處於非活動狀態
遇到過類似的問題,使用相同的配置,可以從本地 -> mysql 服務器連接,但不能作為 cronjob 部署到 k8s 集群。 不知道為什么,但解決方法是在運行應用程序之前添加sleep 10 &&
: args: ["-c", 'sleep 10 && node index.js']
我有同樣的問題,我通過添加我的端口解決了它
Port: YOUR_PORT
有同樣的問題,我通過添加端口解決了它
我在 PhpMyAdmin 中創建了一個新用戶,用戶名為“user”,密碼為“”。 我將主機設置為“%”,它允許來自任何主機的連接。
使用您在XAMPP控制面板中找到的IP地址作為節點js代碼中的主機
我已經使用了 XAMPP 控制面板中的 IP 地址作為數據庫連接中的主機
這解決了問題並連接到數據庫
我面臨同樣的問題,但我已經這樣做了:
通過這樣做,我的代碼可以完美運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.