DRUPAL8模块开发 - DRUPAL8数据库API - 数据库配置

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在实际使用之前不会打开与该数据库的连接。