如何在Drupal上定义一个指定模式的外部数据库


How to define on Drupal an external database specifying the schema

我想将Drupal连接到外部数据库,我需要指定模式,否则Drupal模式模块默认连接'公共'模式。我尝试了,没有成功,使用以下代码:

 $databases['conservation']['default'] = array(
     'database' => 'conservation',
     'schema' => 'projects_test1',
      'username' => 'xxxxxxxxxxx',
      'password' => 'xxx',
      'host' => 'xxx.xxx.xxx',
      'port' => '5432',
      'driver' => 'pgsql',
      'prefix' => array(
     'default'   => 'projects_test1.',
     'users'     => 'shared.',
     'sessions'  => 'shared.',
     'role'      => 'shared.',
     'authmap'   => 'shared.',
   )
);

我已经做了一些谷歌搜索,但还没有发现任何人试图这样做。谢谢卢卡

您可以尝试使用以下代码将Drupal站点连接到外部数据库:

   $databases['conservation']['default'] = array(
     'database' => 'conservation',
     'username' => 'xxxxxxxxxxx',
     'password' => 'xxx',
     'host' => 'xxx.xxx.xxx',
     'port' => '5432',
     'driver' => 'pgsql',
     'prefix' => array(
       'default'   => 'projects_test1.',
       'users'     => 'shared.',
       'sessions'  => 'shared.',
       'role'      => 'shared.',
       'authmap'   => 'shared.',
     )    
  );

上面的代码指定了Drupal的保存DB配置。因此,当你需要查询模块中的其他数据库时,你必须使用这个函数

切换到它的连接
<?php
db_set_active('your_other_db');
?>

完成后,必须关闭它并恢复到默认数据库连接,以便Drupal能够访问它的数据

<?php
db_set_active();
?>