我目前正在學習如何設定節點服務器,我正在制作一個 api,它對托管在我的 vps 上的 mongodb 資料庫執行一些請求。
問題是,當我偵聽 POST 請求并向資料庫發出 SQL 請求時,連接超時并且服務器關閉。
我嘗試將具有所有權限的新用戶添加到 mariadb,我也嘗試使用 sequelize。
但是這些解決方案都不起作用,每次查詢我的資料庫時它仍然超時。我可以連接到 phpmyadmin 并對其進行一些請求,因此我認為我的資料庫運行良好。
這是我的代碼:
router.post('/login', async function(req,res) {
let conn;
try {
// establish a connection to MariaDB
conn = await pool.getConnection();
// create a new query
var query = "select * from people";
// execute the query and set the result to a new variable
var rows = await conn.query(query);
// return the results
res.send(rows);
} catch (err) {
throw err;
} finally {
if (conn) return conn.release();
}
})
我在我的 database.js 檔案中連接到我的資料庫的方式
const pool = mariadb.createPool({
host: process.env.DATABASE_HOST,
user: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABSE_NAME,
});
// Connect and check for errors
module.exports={
getConnection: function(){
return new Promise(function(resolve,reject){
pool.getConnection().then(function(connection){
resolve(connection);
}).catch(function(error){
reject(error);
});
});
}
}
module.exports = pool;
And my error:
Node.js v17.0.1
[nodemon] app crashed - waiting for file changes before starting...
[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
Server started
/Users/alexlbr/WebstormProjects/AlloEirb/server/node_modules/mariadb/lib/misc/errors.js:61
return new SqlError(msg, sql, fatal, info, sqlState, errno, additionalStack, addHeader);
^
SqlError: retrieve connection from pool timeout after 10001ms
at Object.module.exports.createError (/Users/alexlbr/WebstormProjects/AlloEirb/server/node_modules/mariadb/lib/misc/errors.js:61:10)
at timeoutTask (/Users/alexlbr/WebstormProjects/AlloEirb/server/node_modules/mariadb/lib/pool-base.js:319:16)
at Timeout.rejectAndResetTimeout [as _onTimeout] (/Users/alexlbr/WebstormProjects/AlloEirb/server/node_modules/mariadb/lib/pool-base.js:342:5)
at listOnTimeout (node:internal/timers:559:11)
at processTimers (node:internal/timers:500:7) {
text: 'retrieve connection from pool timeout after 10001ms',```
Thanks for you help !
uj5u.com熱心網友回復:
想到了三種可能:
資料庫名稱有錯別字:
資料庫:process.env.DATABSE_NAME
資料庫:process.env.DATAB A SE_NAME
您的環境變數設定不正確。您是否使用
dotenv從.env檔案中加載這些?https://www.npmjs.com/package/dotenv
如果沒有,您如何process.env在運行時設定值?
- 如果確實設定了環境值:
- 驗證這些環境值是否正確
- 驗證您的 MariaDB 服務器正在偵聽哪個介面:服務器可能正在使用
bind-address配置并且僅偵聽 127.0.0.1(這是 Debian/Ubuntu 上的默認設定) - 您要確保服務器正在偵聽:0.0.0.0(所有介面,而不僅僅是本地主機)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/366822.html
標籤:javascript sql 节点.js MongoDB 邮政
