在这里和其他地方,有关在Drupal中使用外部数据库的讨论很多。我从中发现的是:
- 处理数据库表中数据的最佳方法是使用“视图”模块。我已经安装并开始使用它,发现它非常适合处理我添加到站点数据库中的表。
- 使视图与不是由Drupal创建的表一起使用的简单方法是使用数据模块。该模块将站点数据库中任何未被Drupal使用的表都视为“孤立表”,并允许在单击按钮时“采用”该表。
- 显然,“表向导”模块提供了一种处理不在站点数据库中的表的方法。但是该模块不适用于Drupal 7。
- “数据库设置”部分中的“ settings.php”文件包含有关如何定义该站点可以使用的其他数据库的详细文档。但是,以这种方式定义数据库时,其表不会显示在“数据”模块中的孤立表列表中。
我对其中一个站点的“ settings.php”文件中的数据库定义所做的更改是:
$databases = array (
'default' => array ('default' => array (
'database' => 'db_local',
'username' => 'db_local',
'password' => '_________',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
), ),
'extra' => array ('default' => array (
'database' => 'db__extra',
'username' => 'db_admin',
'password' => '_________,
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
), ), );
我有一个表,我想在多站点安装中的多个站点中使用。这意味着我需要将该表放在每个站点都可以访问的数据库中。根据我已完成的阅读,我的选择是:
- 最好,如果可能的话:发现有一种方法可以使“数据”模块识别“ settings.php”中定义的附加数据库中的表,以便可以采用它们。
- 使用表前缀可以允许所有站点使用一个数据库。
- “ Forena Reports ” 模块似乎完全可以满足我的需求,但是在安装后,我却无法正常工作。我提交了问题2475645,除非有解决该问题的方法,否则在那里别无他法。
- 编写我自己的模块,以使Views可以访问“ settings.php”中定义的其他数据库。
- 使用表向导安装Drupal 6,并使用它获取视图以查看我的外部表,然后以某种方式将其结果放入Drupal 7中。(在某些帖子中已建议这样做)。
- 请遵循https://drupal.stackexchange.com/a/3321/45991中的过程,该过程从安装补丁开始,似乎还需要创建我自己的模块。
- 我还查看了Feed,Feed SQL,Views XML Backend和Migrate模块,但是它们都没有说它们可以将外部数据库连接到Views。我想念什么吗?其中之一是正确的解决方案吗?
选项2不切实际,因为这将导致拥有数百个表的庞大数据库,而这将非常难以管理。我在开始使用Drupal方面一直取得很大的进步,但是我不适应4、5或6的任务。选项1是否有可能起作用?还是有其他方法可以使Views与站点数据库外部的表一起使用而又无法编写自己的模块?
另外两个细节:我需要使用的第一个表非常大,超过6,000行,约20列。除了从数据库中获取的页面内容信息外,无意使站点的访问者可以访问数据库。
谢谢你的帮助。