數(shù)據(jù)庫報錯“Unknown database”:為什么我的SQL語句無法找到目標(biāo)數(shù)據(jù)庫?

數(shù)據(jù)庫報錯“Unknown database”:為什么我的SQL語句無法找到目標(biāo)數(shù)據(jù)庫?

數(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)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊7 分享