Utiliser une base de données postgres avec symfony3

Nous sommes à la rétro-ingénierie d'une application web à l'aide d'une base de données postgres. Nous voulons de refactoriser le code à l'aide du framework symfony, mais nous sommes confrontés à un problème pour utiliser la base de données.

Pour le moment, notre projet est de travailler avec une base de données MySQL en utilisant simplement la même structure pour les tables utilisées. Le problème est que, maintenant, nous avons besoin d'utiliser la base de données postgresql, car il y a beaucoup de données et il n'est pas vraiment adapté à MySQL autant que nous le sachions.

Nous avons fait beaucoup de recherche, mais nous n'avons pas réussi à créer une base de données postgresql dans le projet symfony.

Tout d'abord, nous avons essayé d'appliquer ce tutoriel : http://www.tutodidacte.com/symfony2-utiliser-une-base-de-donnee-postgresql nous l'avons adapté autant que possible pour notre projet.
Voici notre config.yml

imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
# Put parameters here that don't need to change on each machine where the app is deployed
#     http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
parameters:
locale: en
framework:
#esi:             ~
#translator:      { fallbacks: ["%locale%"] }
secret:          "%secret%"
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: ~
form:            ~
csrf_protection: ~
validation:      { enable_annotations: true }
#serializer:      { enable_annotations: true }
templating:
engines: ['twig']
default_locale:  "%locale%"
trusted_hosts:   ~
trusted_proxies: ~
session:
#      http://symfony.com/doc/current/reference/configuration/framework.html#handler-id
handler_id:  session.handler.native_file
save_path:       "%kernel.root_dir%/../var/sessions/%kernel.environment%"
fragments:       ~
http_method_override: true
assets: ~
# Twig Configuration
twig:
debug:            "%kernel.debug%"
strict_variables: "%kernel.debug%"
# Doctrine Configuration
doctrine:
dbal:
default_connection: default
connections:
#Mysql
default:
driver:   pdo_mysql
host:     "%database_host%"
port:     "%database_port%"
dbname:   "%database_name%"
user:     "%database_user%"
password: "%database_password%"
charset:  UTF8
#Postgresql
pgsql:
driver:   pdo_pgsql
host:     localhost
port:     5432
dbname:   "%psql_database_name%"
user:     root
password: "%psql_database_password%"
charset:  UTF8
#mapping_types:
#geometry: string
orm:
default_entity_manager: default
auto_generate_proxy_classes: "%kernel.debug%"
#naming_strategy: doctrine.orm.naming_strategy.underscore
#auto_mapping: true
entity_managers:
default:
connection: default
# lister les Bundles utilisant la connexion par defaut
#mappings:
#monprojetmysqlBundle:  ~
#tutoUserBundle:  ~
pgsql:
connection: pgsql    # connection name for your additional DB
# bundles utilisant la connexion Postgresql
#mappings:
# PostgresqlBundle: ~
# Swiftmailer Configuration
swiftmailer:
transport: "%mailer_transport%"
host:      "%mailer_host%"
username:  "%mailer_user%"
password:  "%mailer_password%"
spool:     { type: memory }

mais lorsque nous avons lancé cette commande : php bin/console doctrine:database:create --connexion=pgsql nous avons eu cette réponse :

  [Doctrine\DBAL\Exception\DriverException]              
An exception occured in driver: could not find driver  
[Doctrine\DBAL\Driver\PDOException]  
could not find driver                
[PDOException]         
could not find driver  
doctrine:database:create [--connection [CONNECTION]] [--if-not-exists] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--] <command>

Il semble que nous n'avons pas le module pdo_pgsql nous avons donc cherché comment l'installer.

Le faire, nous avons appliqué le script proposé sur cette page github : https://gist.github.com/doole/8651341#file-install_psql_php-sh

Nous avons changé la version de postgres.application à 9.5.
Après quelques tâtonnements, nous avons finalement réussi à avoir pdo_pgsql sur le résultat de php -m.

Mais le savez, nous avons cette réponse lorsqu'on lance la commande : php bin/console doctrine:database:create --connexion=pgsql

PHP Warning:  PHP Startup: pdo_pgsql: Unable to initialize module
Module compiled with module API=20131226
PHP    compiled with module API=20121212
These options need to match
in Unknown on line 0
PHP Warning:  PHP Startup: pgsql: Unable to initialize module
Module compiled with module API=20131226
PHP    compiled with module API=20121212
These options need to match
in Unknown on line 0
[Doctrine\DBAL\Exception\DriverException]              
An exception occured in driver: could not find driver  
[Doctrine\DBAL\Driver\PDOException]  
could not find driver                
[PDOException]         
could not find driver  
doctrine:database:create [--connection [CONNECTION]] [--if-not-exists] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--] <command>

Nous avons essayé de faire ceci : Installation de PHP avec Postgresql sur MAC à l'aide de homebrew
mais ça n'a rien changé. Maintenant, nous avons 5 de PHP AVERTISSEMENT pour pdo_pgsql et pgsql lorsque nous lançons la commande php bin/console doctrine:database:create --connexion=pgsql

Nous avons aussi vu :
Comment faire pour modifier une base de données postgresql avec Symfony 2.0? et ce : Comment créer 2 connexions (mysql et postgresql) avec Doctrine2 dans Symfony2 mais il n'a pas vraiment d'aide parce que la première préoccupation de debian, et nous travaillons sur OS X El Capitan et le second n'en disent pas plus que le précédent tutoriel.

Enfin, le seul espoir que nous avons, c'est que quelqu'un peut nous aider...
Je vous remercie à l'avance.

Ce qui ne l' WARNING for pdo_pgsql dire? Avez-vous vérifier que vous avez correctement installé le pdo-pgsql module (en regardant la phpinfo() de sortie - être au courant que le php-config peut varier en fonction de la CLI et le Serveur)?
PHP Warning: PHP Startup: pdo_pgsql: Unable to initialize module Module compiled with module API=20131226 PHP compiled with module API=20121212 These options need to match in Unknown on line 0 PHP Warning: PHP Startup: pgsql: Unable to initialize module Module compiled with module API=20131226 PHP compiled with module API=20121212 These options need to match in Unknown on line 0
C'est toujours le même avertissement, mais nous avons 5 fois de suite. J'ai trouvé que, avec toute la commande que j'ai utilisé, j'ai réinstaller php et maintenant j'ai 2 php.ini. Je vais essayer de tout supprimer complètement et réinstaller php avec brew install php56 --with-postgresql
Il a travaillé. J'ai supprimer tous les fichiers php et de le réinstaller avec le brassage et maintenant ça fonctionne. Je vais être plus précis au cours de la journée. Merci fateddy
Heureux que vous ayez pu le comprendre!

OriginalL'auteur MarcoD | 2016-03-16