Создание базы данных из 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
-
Убедитесь, что "Порт" и "Регистрационные данные" для удаленного сервера верны, протестировав из инструмента администрирования базы данных, например, "Администратор".