Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przełącz bazę danych w puli połączeń w nodejs MySQL

Proponuję przekazać dokumentację łączenia dokładna lektura.

Powiedziałeś, że używasz conn.changeUser(/*...*/) , ale powiedziałeś, że używasz const conn = mysql.createPool(/*...*/); aby zainicjować ten conn stały. Oznacza to conn to pula , a nie połączenie; nic dziwnego, że nie ma changeUser metoda.

Jeśli chcesz zmienić bazę danych, musisz to zrobić na połączeniu, a nie w puli. Zamiast używać skrótu pool.query formularz, zrobisz pool.getConnection /conn.changeUser /conn.query /conn.release . Najpierw wywołaj zmienną pool , a nie conn :

const pool = mysql.createPool({

wtedy

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 powiedział , gdybym to był ja, wygodniej byłoby mieć pulę połączeń na bazę danych, a nie wspólną pulę, w której zmieniasz bazę danych. To mogłaby być czysta paranoja z mojej strony, ale tak bym zrobiła. Ale jeśli nie używasz oddzielnych pul, sugeruję zawsze wykonywać changeUser więc masz pewność, jakiej bazy danych używasz, lub przetestuj dokładnie aby zobaczyć, co mysql moduł zajmuje się tym (i powtarza to testowanie przy każdym wydaniu modułu z kropką, chyba że opiekun dokumentuje zachowanie).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. dodawaj wydarzenia urodzinowe do pełnego kalendarza jQuery każdego roku

  2. łączenie się z kontenerem docker-compose mysql odmawia dostępu, ale docker z tym samym obrazem nie

  3. Jak zautomatyzować migrację z samodzielnego MySQL do klastra Galera za pomocą Ansible

  4. Szybka migracja bazy danych przy użyciu Talend

  5. Odpowiednik RowID Oracle w MySQL