在Symfony2中创建数据库

时间:2014-03-11 23:45:09

标签: php mysql symfony doctrine-orm

我继承了一个使用MySQL DB的Symfony项目。我需要创建第二个数据库。我已经更改了... / htdocs / projectFolder / app / config / parameters.yml以获得新的dbName。

parameters:
    database_driver: pdo_mysql
    database_host: 127.0.0.1
    database_port: 8889
    database_name: inherited_db_name
    database_user: root
    database_password: root
    mailer_transport: smtp
    mailer_host: localhost
    mailer_user: null
    mailer_password: null
    locale: en
    secret: nosecret
    database_path: null

更改为:

parameters:
    database_driver: pdo_mysql
    database_host: 127.0.0.1 #can't use "localhost"
    database_port: 8889
    database_name: new_db_to_create
    database_user: root
    database_password: root
    mailer_transport: smtp
    mailer_host: localhost
    mailer_user: null
    mailer_password: null
    locale: en
    secret: nosecret
    database_path: null

我已经尝试过所有可以使用的技巧但命令: doctrine:database:create只是不断尝试创建“inherited_db_name”

如果删除“inherited_db_name”DB,然后再次使用新参数运行命令,则重新创建“inherited_db_name”。我搜索并grep-ed为“inherited_db_name”,但无法找到它来自哪里。任何建议都会受到欢迎。

1 个答案:

答案 0 :(得分:0)

您应该配置Symfony2应用程序来管理这两个数据库。

因此,您的 parameters.yml 文件将如下所示:

parameters:
    database_driver: pdo_mysql
    database_host: 127.0.0.1
    database_port: 8889
    database_name: inherited_db_name
    database_user: root
    database_password: root
    database_driver2: pdo_mysql
    database_host2: 127.0.0.1 #can't use "localhost"
    database_port2: 8889
    database_name2: new_db_to_create
    database_user2: root
    database_password2: root
    mailer_transport: smtp
    mailer_host: localhost
    mailer_user: null
    mailer_password: null
    locale: en
    secret: nosecret
    database_path: null

现在您只需要正确配置Doctrine:

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                driver:   "%database_driver%"
                host:     "%database_host%"
                port:     "%database_port%"
                dbname:   "%database_name%"
                user:     "%database_user%"
                password: "%database_password%"
                charset:  UTF8
            customer:
                driver:   "%database_driver2%"
                host:     "%database_host2%"
                port:     "%database_port2%"
                dbname:   "%database_name2%"
                user:     "%database_user2%"
                password: "%database_password2%"
                charset:  UTF8

    orm:
        default_entity_manager: default
        entity_managers:
            default:
                connection: default
                mappings:
                    AcmeDemoBundle:  ~
                    AcmeStoreBundle: ~
            customer:
                connection: customer
                mappings:
                    AcmeCustomerBundle: ~

请查看Symfony2食谱:http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html