在Drupal结合数据库(Combining databases in Drupal)

2019-09-29 00:31发布

因此,这里的情景:

我建立了一系列需要在同一台服务器上独立的Drupal的6设施事件的网站。 每一个使用相同的架构,但不同的URL和主题。

我今天准备这样的网站能够分享的是在2内容类型,教师和赞助商的内容。 因此,将有一个数据库,所有的老师和赞助商,每个单项的网站可能从nodequeues的手段再拉。

让新教师的节点和节点赞助商可以创建和来自内的任何Drupal的安装的编辑。

这也将是方便共享一个用户表为好,但不是绝对必要的。

有任何想法吗?

Answer 1:

听起来像是对工作域访问项目,一个套件,它从一个Drupal安装和一个共享的数据库运行的集团下属网站提供的工具模块。 该模块可让您在多个网站共享用户,内容和配置。 默认情况下,这些网站共享所有表中的Drupal安装,但域前缀模块允许对高级用户选择,动态表前缀。

恕我直言,这是比轧制这对相当大的复杂性和不能够提升你的网站的风险定制的解决方案要好得多。 见跨实例分享表(不推荐) 。



Answer 2:

难道这帮助你吗?

在SETTINGS.TXT的注释说明了如何使用$ db_prefix共享表:

 * To provide prefixes for specific tables, set $db_prefix as an array.
 * The array's keys are the table names and the values are the prefixes.
 * The 'default' element holds the prefix for any tables not specified
 * elsewhere in the array. Example:
 *
 *   $db_prefix = array(
 *     'default'   => 'main_',
 *     'users'     => 'shared_',
 *     'sessions'  => 'shared_',
 *     'role'      => 'shared_',
 *     'authmap'   => 'shared_',
 *   );

另一种方式,虽然我不知道是否会工作,是创建每个Drupal安装一个数据库,每个数据库中创建一个视图如。 install1_users,引用一个共享表shared_users在共享数据库install2_users。 精心构造的观点应该是可更新的 ,就像一个普通的表。



Answer 3:

有一对夫妇的这样做的方法。

如果它的好共享一个数据库,你可以按如下方式使用前缀:

$db_prefix = array(
  'default'   => 'main_',
  'users'     => 'shared_',
  'sessions'  => 'shared_',
  'role'      => 'shared_',
  'authmap'   => 'shared_',
);

但是,请记住,有一个硬性限制到一个MySQL数据库可以保存表的数目。 根据这一线索,这是1792 。 如果你怀疑你会达到此限制,可以使用这个技巧/错误。

$db_prefix = array(
  'default'   => '',
  'users'     => 'maindb.',
  'sessions'  => 'maindb.',
  'role'      => 'maindb.',
  'authmap'   => 'maindb.',
);

其中maindb是包含你所需要的数据的另一个共享的数据库。 这是不是最好的做法,但它在Drupal 6(没有在D7测试)工作。



文章来源: Combining databases in Drupal
标签: drupal