В последнее время я создал дополнительную базу данных со своим собственным пользователем. Поэтому я создал дополнительный драйвер базы данных в parameters.yml
, Насколько я знаю, это стандартный подход для подобных ситуаций. Пока это работает. В одном из сервисов, которые я создал, я могу использовать этот драйвер базы данных. При запуске кода на сайте проблем вообще нет.
Но, конечно, есть проблема, иначе я не буду просить твоих парней о помощи.
Я пытаюсь установить плагин, выполнив следующую команду:
$ ./composer.phar require pugx/autocompleter-bundle
Это дает следующую ошибку:
[Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException]
You have requested a non-existent parameter "database_driver_geo". Did you mean this: "database_driver"?
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-update-cmd event terminated with an exception
Installation failed, reverting ./composer.json to its original content.
[RuntimeException]
An error occurred when executing the "'cache:clear --no-warmup'" command.
В некоторых других сообщениях говорится, что ошибка в кеше связана с правами на файл / dir. Но, похоже, проблема не в этом, потому что при удалении конфигурации драйвера geo ошибки такого рода не появляются.
Я использую Symfony 2.5
[РЕДАКТИРОВАТЬ: Добавлен файл parameters.yml]
мой parameters.yml
выглядит так:
# This file is auto-generated during the composer install
parameters:
# Default database
database_driver: pdo_mysql
database_host: ***
database_port: ***
database_name: ***
database_user: ***
database_password: ***
# Geo database
database_driver_geo: pdo_mysql
database_host_geo: ***
database_port_geo: ***
database_name_geo: ***
database_user_geo: ***
database_password_geo: ***
mailer_transport: ***
mailer_host: ***
mailer_user: ***
mailer_password: ***
locale: ***
secret: ***
[РЕДАКТИРОВАТЬ: Добавлен файл config.yml]
Раздел доктрины в config.yml
файл:
# Doctrine Configuration
doctrine:
dbal:
default_connection: default
connections:
default:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
mapping_types:
enum: string
bit: integer
# if using pdo_sqlite as your database driver, add the path in parameters.yml
# e.g. database_path: %kernel.root_dir%/data/data.db3
# path: %database_path%
geo:
driver: %database_driver_geo%
host: %database_host_geo%
port: %database_port_geo%
dbname: %database_name_geo%
user: %database_user_geo%
password: %database_password_geo%
charset: UTF8
mapping_types:
enum: string
bit: integer
# if using pdo_sqlite as your database driver, add the path in parameters.yml
# e.g. database_path: %kernel.root_dir%/data/data.db3
# path: %database_path%
orm:
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
***CoreBundle: ~
geo:
connection: geo
mappings:
***GeoBundle: ~
auto_generate_proxy_classes: %kernel.debug%
Я надеюсь, что есть кто-то, кто может помочь мне решить эту проблему.
С уважением,
Малькольм
Как уже упоминалось в комментариях, parameters.yml
файл автоматически перестраивается после композитора update
или же install
команда. Вы можете видеть это в своем composer.json
файл в scripts
раздел:
"scripts": {
"post-install-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
// other commands...
],
"post-update-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
// other commands...
]
},
Конечно, вы можете отключить эту функцию, если она вам не нравится. Но это может быть полезно при правильном использовании.
Поэтому, когда вы устанавливаете какой-либо пакет через композитор, вы теряете параметры, которые вы помещаете непосредственно в parameters.yml
,
Что вы должны сделать, это использовать parameters.yml.dist
файл, который используется для сборки parameters.yml
, Он должен предоставлять значения параметров приложения (если они одинаковы для каждого экземпляра приложения) или значения по умолчанию, если параметры различны для каждой среды (prod / dev).
В вашем случае это второй вариант использования (значения по умолчанию), поскольку учетные данные БД будут меняться для каждого сервера. На самом деле это точно так же, как конфигурация соединения с БД по умолчанию. parameters.yml.dist
содержит некоторые значения по умолчанию для этих параметров.
Других решений пока нет …