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()在数据库之间进行切换。