2015-11-07 213 views
10

我正在使用mapbender3,它是在本地机器上的symfony2中开发的。我被要求将应用程序连接到远程的potgreSQL服务器。以下是parameters.yml文件中的配置。使用symfony从postgreSQL创建数据库

parameters: 
    database_driver: pdo_pgsql 
    database_host:  192.168.3.100 
    database_port:  5434 
    database_name:  idc_core 
    database_path:  ~ 
    database_user:  ******* 
    database_password: ******* 

    mailer_transport: smtp 
    mailer_host:  localhost 
    mailer_user:  ~ 
    mailer_password: ~ 

但是当我运行命令:

php app/console doctrine:database:create 

我不断收到以下错误

could not create database for connection named "idc_core" 
cound not find driver 

我使用Windows 7的WAMP服务器和司机pdo_pgsql显示主动和运行在我的本地计算机上。

我已经检查phpinfo()函数,它显示pdo_pgsql为启用,但是当我运行在命令行看到汇集在模块php -m

我可以看到PDOPDO_MYSQLpdo_sqlite但不是pdo_pgsql

+0

看来你没有在你的PHP'pdo_pgsql' – DonCallisto

+0

就是 “延长= php_pgsql.dll” 扩展在php.ini取消注释(你可以用'phpinfo()函数'验证)? – devz

+0

@DonCallisto'pdo_pgsql'在'phpinfo()'中加载并启用 – goseo

回答

3

你应该

添加 pdo_pgsql扩展到 CLI配置您的PHP

yourPhpDirectory/CLI/php.ini中

CLI使用此配置在命令行,而不是一个用于apache的工作。这就是为什么phpinfo();显示你pdo_pgsqlphp -m没有。同样在Windows操作系统下,您应该重新启动命令行工具以查看配置更改后的差异。

3

请务必将'default'键配置为app/config/database.php

Postgres的,这将是'default' => 'postgres',

如果您收到一个错误[PDOException] could not find driver,请检查您是否安装了正确的PHP扩展。您需要安装并启用pdo_pgsql.sopgsql.so。有关如何执行此操作的说明因操作系统而异。

对于Windows,pgsql扩展应该预先下载官方PHP发行版。只需编辑php.ini,并取消对行extension=pdo_pgsql.soextension=pgsql.so

此外,在php.ini,确保extension_dir设置为正确的目录。它应该是一个名为extensionsext或您的PHP安装目录中的类似文件夹。

最后,将libpq.dllC:\wamp\bin\php\php5.*\复制到C:\wamp\bin\apache*\bin并通过WampServer接口重新启动所有服务。

如果仍然出现异常,则可能需要\bin目录添加Postgres的你PATH

  1. 系统属性 - 在>环境变量
  2. 在“系统变量”组 - >高级选项卡下半部分窗口,滚动浏览并找到PATH条目。
  3. 选择它并单击编辑
  4. 在现有条目的末尾,将完整路径放到您的postgres bin目录中。 bin文件夹应位于postgres安装目录的根目录下。
  5. 重新启动任何打开的命令提示符,或者确保重新启动计算机。

这应该有希望解决任何问题。欲了解更多信息,请参阅:

来源:https://stackoverflow.com/a/25336292/1045444

2
  1. 同时启用扩展在php.iniphp_pdo_pgsqlphp_pgsql(无人为CLI):

    extension=php_pdo_pgsql.dll 
    extension=php_pgsql.dll 
    
  2. 确保“端口”和“登录凭据”远程服务器是正确的通过测试一个数据库管理工具,如Adminer。

相关问题