【问题标题】:How to connect multiple external databases in Magento? [closed]如何在 Magento 中连接多个外部数据库? [关闭]
【发布时间】:2011-01-11 05:06:12
【问题描述】:

我需要从 Magento 连接到一些外部数据库。我找到了Create an external database connection in Magento 的一个教程。本教程很有帮助,它适用于连接到一个外部数据库。但是,我必须连接多个外部数据库。

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

【问题讨论】:

标签: database database-connection magento-1.9


【解决方案1】:

我尚未对其进行测试,但我希望将global\resources 下的externaldb_* 节点与另一个(唯一)资源名称复制,例如externaldb2_* 应该可以工作。

<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>

【讨论】:

  • 感谢乔纳森的及时回复。但是,我想以 Magento 方式获取数据(使用/创建 Magento 模型)。添加 externaldb2 节点后,如何在 Magento 模型中使用它。如示例链接中一样,externaldb 节点用于定义模型。如何类似地为 externaldb2 定义模型?
  • @chapagain,做同样的事情,将模型放在不同的模块中,在所述模块中将第二个数据库设置为您的资源,您可以做您想做的事情......只是从第二个模块到第一个模块调用模型
【解决方案2】:

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

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

$resource = Mage::getSingleton(‘core/resource’);
$conn     = $resource->getConnection(‘externaldb2_read’);

【讨论】:

    【解决方案3】:

    我发现这个 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

    【讨论】:

    • 那个链接现在失效了,你有新的 ULR 吗?任何后续 cmets 关于这如何在现场网站上工作?
    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多