使用Symfony从PostgreSQL创建数据库

10

我正在使用在symfony2上开发的mapbender3,并且在本地机器上工作。我被要求将该应用程序连接到远程potgreSQL服务器。以下是parameters.yml文件中的配置:

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


在php.ini文件中,“extension=php_pgsql.dll”扩展被取消注释了吗? - devz
@DonCallisto pdo_pgsqlphpinfo() 中已加载并启用。 - M Reza Saberi
@devz 是的,在php.ini中该行被取消注释了。 - M Reza Saberi
如果在php.ini中启用了Startup Errors并在命令行中运行php.exe,是否会出现任何错误? - devz
@devz 我在 php.ini 中取消了 display_startup_errors 的注释。我需要运行什么来查看是否显示任何错误? - M Reza Saberi
显示剩余2条评论
3个回答

3
请务必在app/config/database.php中配置'default'键。
对于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安装目录内。
最后,将C:\wamp\bin\php\php5.*\中的libpq.dll复制到C:\wamp\bin\apache*\bin并通过WampServer界面重新启动所有服务。
如果仍然出现异常,则可能需要将postgres的\bin目录添加到您的PATH
  1. 系统属性->高级选项卡->环境变量
  2. 在窗口下半部分的“系统变量”组中,滚动查找PATH条目。
  3. 选择它并单击编辑
  4. 在现有条目的末尾,放置指向您的postgres bin目录的完整路径。 bin文件夹应位于您的postgres安装目录的根目录中。
  5. 重新启动任何打开的命令提示符,或者为了确保,请重新启动计算机。
这应该可以解决任何问题。 更多信息请参见: 来源:https://dev59.com/OF8e5IYBdhLWcg3w0dJJ#25336292

3
您需要将pdo_pgsql扩展添加到您的php的CLI配置文件中,该文件位于您的PhpDirectory/cli/php.ini中。CLI使用此配置文件在命令行下工作,而不是Apache的配置文件。这就是为什么phpinfo();不会显示pdo_pgsqlphp -m的原因。在Windows操作系统下,您需要重新启动命令行工具以查看任何配置更改后的差异。

2
  1. Enable both extensions php_pdo_pgsql and php_pgsql in php.ini (the one for the CLI):

    extension=php_pdo_pgsql.dll
    extension=php_pgsql.dll
    
  2. Ensure that "Port" and "Login Credentials" for the remote server are correct by testing from a database administration tool, like Adminer.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接