sql >> Database >  >> RDS >> Mysql

Schakel database in een verbindingspool in nodejs MySQL

Ik raad aan om de poolingdocumentatie te geven een grondige lezing.

Je hebt gezegd dat je conn.changeUser(/*...*/) gebruikt , maar dan heb je gezegd dat je const conn = mysql.createPool(/*...*/); gebruikt om die conn . te initialiseren constante. Dat betekent conn is een pool , geen verbinding; het is niet verwonderlijk dat het geen changeUser . heeft methode.

Als u de database wilt wijzigen, moet u dit doen op de verbinding, niet op de pool. In plaats van de afkorting pool.query . te gebruiken formulier, zou u pool.getConnection . doen /conn.changeUser /conn.query /conn.release . Roep eerst uw variabele pool aan , niet conn :

const pool = mysql.createPool({

dan

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();
    });
});

Dat gezegd hebbende , als ik het was, zou ik meer op mijn gemak zijn met een verbindingspool per database, in plaats van een gemeenschappelijke pool waarin u de database wijzigt. Dat zou pure paranoia van mijn kant kunnen zijn, maar het is wat ik zou doen. Maar als je geen aparte pools gebruikt, raad ik aan om altijd de changeUser . te doen zodat u zeker weet welke database u gebruikt, of test grondig om te zien wat de mysql module doet om dit aan te pakken (en herhaal die testen bij elke dot-release van de module, tenzij de beheerder het gedrag documenteert).




  1. MySQL - Hoe een Oracle RANK() OVER(ORDER BY score DESC) te doen

  2. Telefoonnummers zoeken in mysql

  3. MySQL INSERT SELECT - Dubbele rijen

  4. Methoden voor het splitsen / samenvoegen van tekenreeksen vergelijken