zoukankan      html  css  js  c++  java
  • 如何配置Drupal数据库信息?

    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中执行查询,可以这样:

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

    有多个从数据库时,也可以这样配置:

    $databases['default']['slave'][] = array(
      'database' => 'slave1',
    );
    $databases['default']['slave'][] = array(
      'database' => 'slave2',
    );
    $databases['default']['slave'][] = array(
      'database' => 'slave3',
    );

    如果需要在slave中执行查询,就这样写:

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

    Drupal遇到这种情况,会随机地从三台从数据库中选择一台。当然,在同一个PHP会话中这个连接是固定的,不同的PHP会话有可能不同。

  • 相关阅读:
    System.Web.Mvc.RoutePrefixAttribute.cs
    HTML5: 实现调用系统拍照或者选择照片并预览
    System.DateTime.cs
    System.Math.cs
    System.Web.UI.WebControls.FileUpload.cs
    系统过程分析
    java实现数字黑洞
    java实现数字黑洞
    java实现数字黑洞
    java实现数字黑洞
  • 原文地址:https://www.cnblogs.com/eastson/p/3336313.html
Copyright © 2011-2022 走看看