我正在尝试在 Electron 上创建一个登录系统,我尝试连接到数据库,但它一直显示错误:
SqlError: (conn:-1, no: 45028, SQLState: HY000) retrieve connection from pool timeout after 10001ms
(pool connections: active=0 idle=0 limit=10)
at module.exports.createError (VM138 Z:\Electron\node_modules\mariadb\lib\misc\errors.js:66:10)
at Pool._requestTimeoutHandler (VM210 Z:\Electron\node_modules\mariadb\lib\pool.js:354:26)
我的代码:
const json = JSON.stringify(env);
const dbdata = JSON.parse(json);
document.getElementById('loginForm').addEventListener('submit',function(event){
event.preventDefault();
const username = document.getElementById('usr').value;
const password = document.getElementById('pwd').value;
let hash = crypto.createHash('sha256');
hash.update(password);
let pool = mariadb.createPool({
host: dbdata.DB_HOST,
user: dbdata.DB_USER,
password: dbdata.DB_PASSWORD,
timeout: 5
});
pool.getConnection()
.then(conn => {
return conn.query('SELECT * FROM accountData WHERE Username = ? AND Password = ?', [username, hash.digest('hex')]);
})
.then(rows => {
if(rows.length > 0){
alert("ok");
}
else{
alert("bad");
}
})
.catch(err => {
console.log(err);
});
})
我的数据库位于 ubuntu 上,与我的 Windows 电脑位于同一互联网上,我尝试过 ubuntu 的 Ip 和 localhost,但它对我不起作用。 我的登录数据存储在.env文件中,我检查过,它可以在nNode.js中读取它,所以问题可能出在数据库中。 顺便说一句,我在 Ubuntu 上尝试了 phpMyAdmin 和 MariaDB 上的用户名和密码,两者都可以工作,但不能在 Electron 上工作。
我终于找到答案了,我修改了/etc/mysql/mariadb.conf.d/50-server.cnf中的bind-address,可以成功连接吗