Создание базы данных из postgreSQL с помощью symfony

Я работаю с mapbender3, который разработан в symfony2 на моей локальной машине. Я попросил подключить приложение к удаленному серверу 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

Я использую WAMP-сервер в Windows 7, а драйвер pdo_pgsql показывает активный и запущенный на моем локальном компьютере.

Я проверил phpinfo() и отобразил pdo_pgsql как включен, но когда я запускаю php -m в командной строке, чтобы увидеть модули, скомпилированные в,

Я могу видеть PDO, pdo_mysql и pdo_sqlite, но не pdo_pgsql

Ответ 1

Вы должны добавить расширение pdo_pgsql в конфигурацию CLI вашего php в

yourPhpDirectory/кли/php.ini

CLI использует эту конфигурацию для работы в командной строке, а не для apache. Вот почему phpinfo(); показывает вам pdo_pgsql и php -m нет. Также в ОС Windows вы должны перезапустить инструмент командной строки, чтобы увидеть отличия после изменения любой конфигурации.

Ответ 2

Обязательно настройте ключ 'default' в app/config/database.php

Для postgres это будет 'default' => 'postgres',

Если вы получаете ошибку [PDOException] could not find driver, проверьте, установлены ли правильные расширения PHP. Вам необходимо установить pdo_pgsql.so и pgsql.so. Инструкции о том, как это сделать, различаются между операционными системами.

Для Windows расширения pgsql должны быть предварительно загружены с официальным распределением PHP. Просто отредактируйте свой php.ini и раскомментируйте строки extension=pdo_pgsql.so и extension=pgsql.so

Кроме того, в php.ini убедитесь, что extension_dir установлен в соответствующий каталог. Это должна быть папка с именем extensions или ext или аналогичная в вашем установочном каталоге PHP.

Наконец, скопируйте libpq.dll из C:\wamp\bin\php\php5.*\ в C:\wamp\bin\apache*\bin и перезапустите все службы через интерфейс WampServer.

Если вы все еще получаете исключение, вам может потребоваться добавить каталог postgres \bin в ваш PATH:

  • Свойства системы → вкладка "Дополнительно" → переменные среды
  • В группе "Системные переменные" в нижней половине окна прокрутите страницу и найдите запись PATH.
  • Выберите его и нажмите "Изменить"
  • В конце существующей записи поместите полный путь в ваш каталог bin postgres. Папка bin должна быть расположена в корневой папке вашего каталога установки postgres.
  • Перезапустите все открытые командные строки или, вернее, перезапустите компьютер.

Это, надеюсь, решит любые проблемы. Для получения дополнительной информации см.:

Источник: fooobar.com/questions/165850/...

Ответ 3

  • Включите оба расширения php_pdo_pgsql и php_pgsql в php.ini (тот, что для CLI):

    extension=php_pdo_pgsql.dll
    extension=php_pgsql.dll
    
  • Убедитесь, что "Порт" и "Регистрационные данные" для удаленного сервера верны, протестировав из инструмента администрирования базы данных, например, "Администратор".