【问题标题】:Recommended way to change database in existing connecction with node-mysql在与 node-mysql 的现有连接中更改数据库的推荐方法
【发布时间】:2015-04-09 04:43:09
【问题描述】:

我正在尝试更改节点中现有连接中的数据库。 连接在createConnection 调用中可能有也可能没有数据库名称。 代码如下:

var mysql = require('mysql');


connection = mysql.createConnection( {
    host               : 'localhost',
    user               : 'me',
    password           : 'secret',
    port               : 3306,
    /* database           : 'test' // optional */
});

我正在使用 node-mysql 库。 目前我正在关闭连接并重新连接。

有没有更好的方法来做到这一点?类似于 php 中的mysql_select_db

【问题讨论】:

    标签: node.js node-mysql


    【解决方案1】:

    您可以使用changeUser 方法更改一些连接参数*:

    connection.changeUser({database : 'my_database'}, function(err) {
      if (err) throw err;
    });
    

    *这些参数的列表:

    • user:新用户的名字(默认为上一个)。
    • password:新用户的密码(默认为上一个)。
    • charset:新的字符集(默认为前一个)。
    • database: 新数据库(默认为上一个)。

    【讨论】:

    • 如何在连接池中切换数据库?
    • @HelloWorld 看到这个answer 在连接池中切换数据库。请注意,我同意关于每个数据库都有一个连接池,而不是更改数据库的公共池。
    【解决方案2】:

    我发现的唯一方法是使用“USE”命令

    在您的示例中,它看起来像这样

    let database = 'my_database';
    connection.query(`USE ${database}`, (error, results, fields) => {
        ...
      });
    

    之后使用此连接的所有查询都将发送到新数据库

    【讨论】:

      【解决方案3】:

      或者只是在查询中使用数据库名称

      conn.query('SELECT H FROM other.GeoDB WHERE H = \'r1r0f\' LIMIT 1  ', function (err, res, f)
      conn.query('SELECT * FROM data.users WHERE U = \'123\' LIMIT 1  ', function (err, res, f)
      

      【讨论】:

        猜你喜欢
        • 2014-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-29
        • 2019-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多