连接到不同服务器上的多个数据库

时间:2018-11-23 12:06:57

标签: php database symfony doctrine

一段时间以来,我一直在将Symfony与Doctrine结合使用,直到现在为止,都可以通过config.yml将Doctrine配置为连接到同一服务器(IP)上的多个数据库。

但是现在我有另一种情况了。

我正在处理一个案例,该案例具有在不同IP地址上运行的多个项目。我可以连接在还托管主应用程序的计算机上本地运行的数据库,但是现在我需要连接到另一台服务器上托管的另一个数据库。因此,要设计这种情况:

  • 服务器Alpha。 IP:193.15.15.15,数据库名称:“ Foo”
  • 服务器Beta。 IP:193.15.15.16,数据库名称:“ Bar”

我已经在我的parameter.yml中为每个数据库定义了用户名和密码,所以这没什么大不了的。我只想知道当应用程序在服务器Alpha上时,是否可以连接到服务器Beta上的(本地托管)数据库。

谢谢!

1 个答案:

答案 0 :(得分:1)

您应该配置多个实体管理器和连接
在文件config.yml上:

doctrine:
     dbal:
         default_connection: default
         connections:
            default:
                driver:   pdo_mysql
                host:     '193.15.15.15'
                port:     '%port_parameter_for_foo%'
                dbname:   'Foo'
                user:     '%user_parameter_for_foo%'
                password: '%pass_parameter_for_foo%'
                charset:  UTF8
            customer:
                driver:   pdo_mysql
                host:     '193.15.15.16'
                port:     '%port_parameter_for_bar%'
                dbname:   'Bar'
                user:     '%user_parameter_for_bar%'
                password: '%pass_parameter_for_bar%'
                charset:  UTF8

    orm:
        default_entity_manager: default
        entity_managers:
            default:
                connection: default
                mappings:
                    BundleOnAlpha:  ~
            customer:
                connection: beta
                mappings:
                    BundleOnBeta: ~

文档更加完整: https://symfony.com/doc/3.4/doctrine/multiple_entity_managers.html