sql >> Databáze >  >> RDS >> Mysql

Přepněte databázi ve fondu připojení v nodejs MySQL

Navrhuji poskytnout dokumentaci sdružování důkladné čtení.

Řekli jste, že používáte conn.changeUser(/*...*/) , ale pak jste řekli, že používáte const conn = mysql.createPool(/*...*/); k inicializaci tohoto conn konstantní. To znamená conn je pool , není spojení; není divu, že nemá changeUser metoda.

Pokud chcete změnit databázi, musíte to udělat na připojení, ne na fondu. Místo použití zkratky pool.query formuláře, udělali byste pool.getConnection /conn.changeUser /conn.query /conn.release . Nejprve zavolejte svou proměnnou pool , nikoli conn :

const pool = mysql.createPool({

pak

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

To bylo řečeno , kdybych to byl já, byl bych pohodlnější mít fond připojení na databázi, spíše než společný fond, kde měníte databázi. To by mohla být z mé strany čistá paranoia, ale já bych to udělal. Ale pokud nepoužíváte samostatné fondy, doporučuji vždy provést changeUser abyste si byli jisti, jakou databázi používáte, nebo důkladně otestujte abyste viděli, co je mysql modul to zvládne (a opakujte toto testování při každém vydání modulu, pokud správce nezdokumentuje chování).




  1. Jak mohu zadat jedinečné omezení pro více sloupců v MySQL?

  2. Jak odstranit úvodní a/nebo koncové mezery řetězce v T-SQL

  3. nullvalue:Zobrazit hodnoty NULL v SQLite

  4. Připojení k MySQL přes SSL pomocí PHP