1

我是相当新的 Symfony2。我安装了 FOSUserBundle 和 DoctrineMongoDBBundle ,我试图让它们一起正常工作。在我之前的项目中,我设法从我的 mongoDB 数据库中创建了一个新用户并导入用户列表。根据我的 composer.json,这个之前的项目是 symfony 版本 2.1.x-dev。在我的新项目中,我使用的是 symfony ~2.4。而且我无法在 FOSUserBundle 上加载 /register 页面。symfony 没有加载注册表单,而是抛出这个错误:

An exception occured in driver: SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: NO) 

所以 Symfony 正在尝试使用 pdo_mysql 驱动程序而不是连接到 mongoDB,因为它在我之前的项目中做得很好。根据 FOSUserBundle 文档,我遵循了相同的步骤:在 app/config/config.yml 中,我设置了如下的教义_mongodb 和 fos_user 信息:

#doctrine_mongodb
doctrine_mongodb:
    connections:
        default:
            server: mongodb://localhost:27017
            options: {}
    default_database: agitw
    document_managers:
        default:
            auto_mapping: true

#fos user
fos_user:
    db_driver:     mongodb
    firewall_name: main
    user_class:    Van\UserBundle\Document\User

我很确定这种行为是由 symfony 2.4 引起的,因为我无法用我的 symfony 2.1 项目重现它。有谁知道为什么 symfony 试图强制 pdo_mysql 连接,尽管我正确填写了配置文件?

4

1 回答 1

1

经过大量挖掘,找到了解决方案。如果你在 MongoDB 中使用 Symfony,你需要在 app/config/config.yml 文件中注释所有的“doctrine:”部分。我的文件充满了“doctrine:”部分和“doctrine_mongodb:”部分。似乎如果设置了“教义:”配置,symfony 将在任何其他数据库之前使用它。

于 2014-05-15T11:26:33.673 回答