[英]Node failed to connect MySQL without any error prompt
問題已經解決了,但是我想給這個問題留下更深的印象。 謝謝大家!
更新我發現/src/mysql/index.js
,這段代碼
/* this is wrong */
MySqlConnection.connect((error) => {
/* old code */
throw new Error(error.message);
/* new code */
error && new Error(error.message);
});
修改后,我連接到MySQL。但我仍然無法得到正確的回報,我得到了nudefined...
我嘗試使用 node 連接 MySQL 並運行它,但我失敗了並且沒有收到錯誤消息。
我使用了 npm 包中的 koa2 和 mysql。
"koa2": "^2.0.0-alpha.7",
"mysql": "^2.17.1",
我的 MySQL 版本是 8.0
我封裝了一個連接mysql的函數,肯定是mysql的配置沒用。
/* /src/mysql/index.js */
const MySqlConnection = require("./mysql.index");
/**
* connnect mysql
* @param {string} sqlStatement sql statement
* @param {object} params some required parameters
* @param {function} callback if success
*/
const MySqlOperator = (sqlStatement, params, callback) => {
MySqlConnection.connect((error) => {
throw new Error(error.message);
});
MySqlConnection.query(sqlStatement, params, (error, result, fieldValues) => {
try {
callback && callback(result, fieldValues);
} catch {
throw new Error(error.message);
}
});
MySqlConnection.end();
MySqlConnection.destroy();
};
module.exports = MySqlOperator;
我就這樣用
const MySqlOperator = require("./src/mysql/MySql");
// These three fields are all char types
const sql = "INSERT INTO users(userUuid, userName, userPwd) values(1111,2222,3333);";
MySqlOperator(sql, {}, (error, result, fliedValues) => {
if (error) {
console.log(error.message);
} else {
/* here is undefined... */
console.log(result, fliedValues);
}
});
App.listen(ServerPort, () => {
// eslint-disable-next-line no-undef
console.log("start success");
});
我執行node index.js
,node告訴我已經start success
,終端輸出start success
,但是mysql插件沒有工作,也沒有報錯信息。請問怎么做才能成功插入這個數據到mysql ?
首先,你說:
// These three fields are all char types
const sql = "INSERT INTO users(userUuid, userName, userPwd) values(1111,2222,3333);";
所以我建議你尊重類型並將其修改為:
const sql = "INSERT INTO users(userUuid, userName, userPwd) values('1111','2222','3333');";
而且我認為您在/src/mysql/index.js文件的這一部分也有錯誤:
try {
callback && callback(result, fieldValues);
} catch {
throw new Error(error.message);
}
您的原始回調函數接受三個參數: (error, result, flyedValues)並將您的數據庫結果作為錯誤傳遞給那里,因為我認為您的查詢結果將沒有錯誤(如undefined ),然后 console.log(result, flyedValues) ; 寫入undefined 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.