數(shù)據(jù)庫操作時的常見錯誤:未指定數(shù)據(jù)庫
如問題所示,程序在執(zhí)行 sql 查詢時遇到:”er_bad_db_error: unknown database” 的錯誤。這是因為 sql 語句中未指定要操作的數(shù)據(jù)庫,導(dǎo)致數(shù)據(jù)庫無法找到對應(yīng)的表。
在 mysql 中,要指定數(shù)據(jù)庫,需要在 sql 語句的開頭添加 use 數(shù)據(jù)庫名 語句。例如,
use my_db_01;
執(zhí)行此語句后,所有后續(xù)的 sql 語句將針對數(shù)據(jù)庫 my_db_01 執(zhí)行。
在代碼中,可以先使用 use 語句指定數(shù)據(jù)庫,然后執(zhí)行 sql 查詢。例如,修改后的代碼如下:
exports.regUser = (req, res) => { // 1. 獲取用戶信息 const userinfo = req.body; // 2. 指定數(shù)據(jù)庫 db.query('USE my_db_01;'); // 3. 執(zhí)行數(shù)據(jù)庫操作,查重用戶名 // 4. 定義 SQL 語句 const sql = 'SELECT * FROM getloonwh_users WHERE username=? AND usernumber=?'; // 5. 執(zhí)行 db.query(sql, [userinfo.username, userinfo.usernumber], (err, results) => { if (err) return res.cc(err); if (results.length > 0) return res.send('已存在用戶名!重新輸入'); const sqlStr = 'INSERT INTO getloonwh_users SET ?'; db.query(sqlStr, { username: userinfo.username, usernumber: userinfo.usernumber }, (err, results) => { if (err) return res.cc(err); if (results.affectedRows !== 1) return res.cc('注冊失敗!'); res.send({ status: 0, msg: '注冊成功!' }); }); }); // res.send('注冊成功!') };
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END