簡體   English   中英

節點連接MySQL失敗,沒有任何錯誤提示

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM