8

我需要从 Magento 连接到一些外部数据库。我找到了一个在 Magento 中创建外部数据库连接的教程。本教程很有帮助,它适用于连接到一个外部数据库。但是,我必须连接多个外部数据库。

如何在 Magento 中连接多个外部数据库(假设 5 个外部数据库)?

4

4 回答 4

5

我还没有测试过它,但我希望用另一个(唯一的)资源名称复制externaldb_*下面的节点应该可以工作。global\resourcesexternaldb2_*

<global>
<resources>
  <externaldb_write>
    <connection>
      <use>externaldb_database</use>
    </connection>
  </externaldb_write>
  <externaldb_read>
    <connection>
      <use>externaldb_database</use>
    </connection>
  </externaldb_read>
  <externaldb_setup>
    <connection>
      <use>core_setup</use>
    </connection>
  </externaldb_setup>
  <externaldb_database>
    <connection>
      <host><![CDATA[localhost]]></host>
      <username><![CDATA[db_username]]></username>
      <password><![CDATA[db_password]]></password>
      <dbname><![CDATA[db_name]]></dbname>
      <model>mysql4</model>
      <type>pdo_mysql</type>
      <active>1</active>
    </connection>
  </externaldb_database>
  <externaldb2_write>
    <connection>
      <use>externaldb2_database</use>
    </connection>
  </externaldb2_write>
  <externaldb2_read>
    <connection>
      <use>externaldb2_database</use>
    </connection>
  </externaldb2_read>
  <externaldb2_setup>
    <connection>
      <use>core_setup</use>
    </connection>
  </externaldb2_setup>
  <externaldb2_database>
    <connection>
      <host><![CDATA[localhost2]]></host>
      <username><![CDATA[db2_username]]></username>
      <password><![CDATA[db2_password]]></password>
      <dbname><![CDATA[db2_name]]></dbname>
      <model>mysql4</model>
      <type>pdo_mysql</type>
      <active>1</active>
    </connection>
  </externaldb2_database>
</resources>

于 2011-01-11T05:10:36.297 回答
5

您可以在模块的 etc/config.xml 文件中指定使用的资源,以便模块将始终使用某个数据源,或者您可以在全局配置 xml 中指定,如上一个答案所述,那么此连接将由默认。

您可以更改代码中的资源:

$resource = Mage::getSingleton(‘core/resource’);
$conn     = $resource->getConnection(‘externaldb2_read’);
于 2011-02-07T11:15:06.150 回答
2

我发现这个 Magento 模块将有助于连接到外部数据库系统。http://subesh.com.np/2012/02/magento-external-database-connector-v1-0-0-released/

我尝试了该模块,似乎运行良好。希望这会有所帮助。

编辑:

模块也可用于 Magento Connect。http://www.magentocommerce.com/magento-connect/sp-edb-4574.html

于 2011-04-13T04:26:57.390 回答
0

据我所知,您不能让模型从同一个模块中连接到多个数据库源。

我所做的是创建一个并行虚拟模块,它只包含需要连接到备用数据库的模型。因此,完成所有工作的模块位于一个分支中,与另一个数据库通信的虚拟模块是独立的。很好地解决了问题,虽然它不是最优雅的解决方案......但它也不是最不优雅的

于 2011-07-15T20:56:50.430 回答