翻译者:长风Drupal开发
翻译地址:http://www.5188jxt.com/technology/drupal8mo-kuai-kai-fa-drupal8shu-ju-ku-api-shu-ju-ku-pei-zhi.htm
DRUPAL8数据库API - 数据库配置 Drupal8 定义数据库连接的主要方法是通过settings.pgp中的$database数组。顾名思义,$databases允许定义多个数据库连接。它还支持多个目标的定义。 connection key(连接密钥) $databases['default'] connection key(连接密钥)是给定数据库连接的唯一标识符。对于一个确定的站点,connection key(连接密钥)必须是唯一的,并且必须始终存在“默认”的连接,这将是主要的Drupal8数据库。在大多数站点上,它将是唯一定义的连接。 Target(目标) $databases['default']['default'] 一个确定的connection key (连接密钥)必须有一个或者多个目标。目标是可以使用的数据库,如果可用的话。必须为每个connection key(连接密钥)定义一个“缺省”目标。如果未定义请求的目标,系统将悄然退回到“默认”。 $databases 语法 $databases数组是至少三个级别的嵌套数组。第一级定义connection key(连接密钥)。第二个定义数据库目标。每个目标的值是该键/目标的连接信息。一些例子应该更清楚。 $databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupaldb', 'username' => 'username', 'password' => 'secret', 'host' => 'localhost', ); 上面的$databases数组定义了单个连接密钥(“default”),带有单个目标(“default”)。该连接使用名为'drupaldb'的本地主机MySQL数据库(“驱动程序”密钥),用户名为“用户名”和“秘密”密码。上面的示例是单个SQLServer Drupal安装的典型案例,对于绝大多数站点来说都是足够的.对于主/副本配置,我们将定义如下: $databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupaldb1', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver1', ); $databases['default']['replica'][] = array( 'driver' => 'mysql', 'database' => 'drupaldb2', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver2', ); $databases['default']['replica'][] = array( 'driver' => 'mysql', 'database' => 'drupaldb3', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver3', ); 这个定义提供了一个“default”服务器和两个“replica”服务器。注意,“replica”键是一个数组。如果任何目标被定义为连接信息的数组,则对于每个页面请求,将针对该目标随机选择一个定义的服务器。也就是说,在一个页面请求中,所有副本查询将被发送到DbServ2,而下一个查询将全部发送到DbServ3。 $databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupaldb1', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver1', ); $databases['extra']['default'] = array( 'driver' => 'sqlite', 'database' => 'files/extradb.sqlite', ); 此配置定义了一个主Drupal数据库和一个使用SQLite标记为“extra”的附加数据库。注意SQLite连接信息的结构不同于MySQL。每个驱动程序可能有不同的配置,这取决于什么是合适的。
请记住,不管您定义了多少连接,Drupal8在实际使用之前不会打开与该数据库的连接。