Answers:
没有特别的地方可以放置此代码(挂钩或模块),只需将其放在需要的位置即可。
因此,它应该刚好在您对另一个数据库的查询之前,而在刚要设置默认数据库之后。
如果您的所有模块都将依赖于外部数据库,则只需将其放在为模块调用的第一个函数的开头,以及最后一个函数的末尾。
当然,您的每一项功能都应在外部DB上执行,并且无需查询而无需切换回默认数据库。
以下代码将失败:
db_set_active('YourDatabaseKey');
$result = db_query('SELECT ...'); //Your own queries on the external DB.
$node = node_load(123); //This would fail on the external DB.
$result = db_query('SELECT ...'); //Your own queries on the external DB.
db_set_active(); 
您应该来回切换:
db_set_active('YourDatabaseKey');
$result = db_query('SELECT ...'); //Your own queries on the external DB.
db_set_active(); 
$node = node_load(123); //Query made on the default Drupal DB.
db_set_active('YourDatabaseKey');
$result = db_query('SELECT ...'); //Your own queries on the external DB.
db_set_active(); 
您将必须添加到settings.php位于/sites/default/以下语法中
// Drupal 6
$db_url['default'] = 'mysql://db_user:password@localhost/db_name';
$db_url['external'] = 'mysql://db_user2:password@localhost/db_name2';
// Drupal 7
$databases = array (
  'default' =>
  array (
    'default' =>
    array (
      'database' => 'db1',
      'username' => 'user1',
      'password' => 'pass',
      'host' => 'host1',
      'port' => '',
      'driver' => 'mysql',
      'prefix' => '',
    ),
  ),
  'extra' =>
  array (
    'default' =>
    array (
      'database' => 'db2',
      'username' => 'user2',
      'password' => 'pass',
      'host' => 'host2',
      'port' => '',
      'driver' => 'mysql',
      'prefix' => '',
    ),
  ),
);
在完成这些设置之后,您可以使用db_set_active()在数据库之间进行切换。