Предлагам да предоставите документацията за обединяване задълбочено четене.
Казахте, че използвате 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 модулът прави, за да се справи с това (и повторете това тестване при всяко освобождаване на точка на модула, освен ако поддържащият документира поведението).