如何配置Drupal数据库信息

如何配置Drupal数据库信息,第1张

Drupal的数据库连接信息通过文件settings.php中的变量$databases设置。变量$databases是一个二维的数组,第一维称为key,第二维称为target。使用这种方式可以处理多数据库和主从分离这样复杂的情况

例如,假设有这样的配置:

$databases['default']['default']

=

array(

'database'

=>

'drupal',)$databases['default']['slave1']

=

array(

'database'

=>

'slave1',)$databases['default']['slave2']

=

array(

'database'

=>

'slave2',)$databases['erp']['default']

=

array(

'database'

=>

'erp',)$databases['oa']['default']

=

array(

'database'

=>

'oa',)

默认的key是default,默认的target是default,因此大多数情况可以这样查询:

$result

=

db_query('SELECT

*

FROM

node')

//

drupal数据库

如果需要在指定的target中执行查询,可以这样:

$result

=

db_query('SELECT

*

FROM

node',

null,

array('target'

=>

'slave1'))$result

=

db_query('SELECT

*

FROM

node',

null,

array('target'

=>

'slave2'))

如果需要在指定的key中执行查询,可以这样:

DatabaseConnection::setActiveConnection('erp')$result

=

db_query('SELECT

*

FROM

erp_user')

Drupal的数据库连接信息通过文件settings.php中的变量$databases设置。变量$databases是一个二维的数组,第一维称为key,第二维称为target。使用这种方式可以处理多数据库和主从分离这样复杂的情况。

例如,假设有这样的配置:

$databases['default']['default'] = array( 'database' =>'drupal',)$databases['default']['slave1'] = array( 'database' =>'slave1',)$databases['default']['slave2'] = array( 'database' =>'slave2',)$databases['erp']['default'] = array( 'database' =>'erp',)$databases['oa']['default'] = array( 'database' =>'oa',)

默认的key是default,默认的target是default,因此大多数情况可以这样查询:

$result = db_query('SELECT * FROM node')// drupal数据库

如果需要在指定的target中执行查询,可以这样:

$result = db_query('SELECT * FROM node', null, array('target' =>'slave1'))$result = db_query('SELECT * FROM node', null, array('target' =>'slave2'))

如果需要在指定的key中执行查询,可以这样:

DatabaseConnection::setActiveConnection('erp')$result = db_query('SELECT * FROM erp_user')

Drupal是主流的CMS系统之一。因此具备Drupal技能的开发人员有很多。

考虑这样的情况,如果你有一个现有的非Drupal系统,然后有一个Drupal开发团队,你希望这个Drupal团队帮你扩展应用。

那么这个时候,Drupal应用就应该设计成是支持多数据库的。

在Drupal中使用多数据,也很简单。

1、首先在配置文件(Settings.php)中把默认的数据库配置项改成数组形式:

<?php

$db_url['default'] = 'mysql://drupal:drupal@localhost/drupal'

$db_url['jigo'] = 'mysql://user:pwd@localhost/jigo'

?>

注意这里的数据库格式必须是一样的。即不能一个是mysql,另外一个是pgsql。

而且默认的必须是drupal自己的数据库。

2、然后在程序中动态切换:

<?php

global $db_url// 数据库链接的内部变量

if (!is_array($db_url)) {

$default_db = $db_url

$db_url = array('default' =>$default_db)

}

//也可以动态设置新的数据库,这里注释掉,因为我们已经写在配置项中

//$db_url['jigo'] = 'mysql://user:pwd@localhost/jigo'

db_set_active('jigo') // activation &execution same as explained above

$results = db_query($sql)//sql represents the query to be executed

db_set_active('default')// set back to original

?>

regards,

iefreer


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9672529.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存