sql >> データベース >  >> RDS >> Mysql

nodejsMySQLの接続プールでデータベースを切り替えます

    プーリングドキュメント を提供することをお勧めします よく読んでください。

    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が何であるかを確認する モジュールはこれを処理します(そして、メンテナが動作を文書化しない限り、モジュールのすべてのドットリリースでそのテストを繰り返します)。




    1. java.sql.SQLExceptionを修正する方法:列'id'が見つかりません。 SpringBootのエラー

    2. PgBackRestをインストールする方法

    3. Postgresql再帰的自己結合

    4. ユーザーがPHPを使用してMySQLにすでに存在するかどうかを確認する方法