Предлагам да предоставите документацията за обединяване задълбочено четене.
Казахте, че използвате conn.changeUser(/*...*/)
, но след това казахте, че използвате const conn = mysql.createPool(/*...*/);
за да инициализирате това conn
постоянен. Това означава conn
е басейн , а не връзка; не е изненадващо, че няма changeUser
метод.
Ако искате да промените базата данни, трябва да го направите на връзката, а не на пула. Вместо да използвате съкратеното pool.query
формуляр, бихте направили pool.getConnection
/conn.changeUser
/conn.query
/conn.release
. Първо, извикайте вашата променлива pool
, а не conn
:
const pool = mysql.createPool({
след това
pool.getConnection(function(err, conn) {
if (err) {
// handle/report error
return;
}
conn.changeUser({
database: req.session.dbname
}, function (err) {
if (err) {
// handle/report error
return;
}
// Use the updated connection here, eventually
// release it:
conn.release();
});
});
Това каза , ако бях аз, бих ми било по-удобно да имам пул за връзки за база данни, а не общ пул, в който променяте базата данни. Това може да е чиста параноя от моя страна, но бих направил това. Но ако не използвате отделни пулове, предлагам винаги да правите changeUser
така че да сте сигурни каква база данни използвате, или тествайте обстойно за да видите какво е mysql
модулът прави, за да се справи с това (и повторете това тестване при всяко освобождаване на точка на модула, освен ако поддържащият документира поведението).