Мы ретро-инжиниринг веб-приложения с использованием базы данных postgres. Мы хотим реорганизовать код, используя структуру symfony, но перед нами стоит проблема с использованием базы данных.Используйте базу данных postgres с symfony3
На данный момент наш проект работает с базой данных MySQL, используя ту же структуру для используемых таблиц. Проблема в том, что теперь нам нужно использовать базу данных postgresql, потому что есть много данных, и она, насколько нам известно, на самом деле не адаптирована к MySQL.
Мы провели много исследований, но нам не удалось создать базу данных postgresql в проекте symfony.
Сначала мы попытались применить этот урок: http://www.tutodidacte.com/symfony2-utiliser-une-base-de-donnee-postgresql мы адаптировали его как можно больше для нашего проекта. Вот наш 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 }
но когда мы запустили эту команду: PHP бен/консольную доктрина: база данных: создать --connection = PgSQL мы имели этот ответ:
[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>
Похоже, что у нас нет модуля pdo_pgsql, поэтому мы искали, как его установить.
Для этого мы применили сценарий, предложенный на этой странице github: https://gist.github.com/doole/8651341#file-install_psql_php-sh
Мы изменили версию postgres.app на 9.5. После нескольких попыток мы, наконец, получили pdo_pgsql на результат php -m.
Но знаете, у нас есть этот ответ, когда мы запускаем команду: PHP бен/консоли доктриной: База данных: создать --connection = 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>
Мы пытались сделать это: Install PHP with Postgresql on MAC using homebrew но Бесполезный Ничего изменить. Теперь у нас есть 5 PHP ПРЕДУПРЕЖДЕНИЯ для Pdo_Pgsql и PgSQL, когда мы запускаем команду PHP бен/консольную доктрина: базу данных: создать --connection = PgSQL
Мы также видели это: How to change a database to postgresql with Symfony 2.0? и это: How to create 2 connections (mysql and postgresql) with Doctrine2 in Symfony2 но это действительно не помогло, потому что первая касается debian, и мы работаем над OS X El Capitan, а вторая не говорила больше, чем предыдущий учебник.
Наконец, единственная надежда, что у нас есть, это то, что кто-то может нам помочь ... Спасибо заранее.
Что говорит 'WARNING для pdo_pgsql'? Вы проверили, что вы правильно установили модуль pdo-pgsql (посмотрев на вывод 'phpinfo()», помните, что php-config может отличаться для CLI и Server)? – fateddy
'PHP Предупреждение: PHP Startup: Pdo_Pgsql: Не удалось инициализировать модуль модуль собран с модулем API = 20131226 PHP скомпилирован с модулем API = 20121212 Эти параметры должны соответствовать в Unknown в строке 0 PHP Warning: PHP Startup: PgSQL : Не удалось инициализировать модуль Модуль, скомпилированный с модулем API = 20131226 PHP, скомпилированный с модулем API = 20121212 Эти параметры должны соответствовать в Unknown on line 0' – MarcoD
Это все равно то же предупреждение, но у нас есть 5 раз. Я обнаружил, что со всей командой, которую я использовал, я переустанавливаю php, и теперь у меня есть 2 php.ini. Я попытаюсь полностью удалить все и переустановить php с помощью 'brew install php56 --with-postgresql' – MarcoD