У меня возникла проблема при создании нескольких баз данных на основе нескольких соединений для целей функционального тестирования.
Я создал в приложении Symfony 3.3 из-за некоторых ограничений и обновления поддерживаемоговерсия Symfony будет запланирована.Следует помнить, что мне приходилось иметь дело с существующей базой данных PostgreSQL, особенно с 3 базами данных:
- база данных A
- база данных B
- база данных C
Мне не нравится проектировать мое приложение из существующей базы данных.Обычно, когда я создаю приложение с нуля, я сначала проектирую свое приложение и все бизнес-правила, но здесь у меня не было выбора.Звучит плохо, но эта часть моего приложения разработана на основе существующей базы данных.Любое предложение в любом случае приветствуется.Итак, в папке App \ Entity я настроил сопоставление для 3 соединений:
- сущностей, связанных с базой данных A, находятся в папке App \ Entity \ Dba
- объекты, связанные с базой данных B, находятся в папке App \ Entity \ Dbb
- объекты, связанные с базой данных C, в папке App \ Entity \ Dbc
При использовании flex конфигурация доктрины в файле doctrine.yaml выглядит следующим образом:
doctrine:
dbal:
default_connection: a
connections:
a:
driver: '%database_a_driver%'
url: '%env(DATABASE_A_URL)%'
charset: UTF8
server_version: '%server_version%'
b:
driver: '%database_b_driver%'
url: '%env(DATABASE_B_URL)%'
charset: UTF8
server_version: '%server_version%'
c:
driver: '%database_c_driver%'
url: '%env(DATABASE_C_URL)%'
charset: UTF8
server_version: '%server_version%'
orm:
auto_generate_proxy_classes: '%kernel.debug%'
default_entity_manager: em_a
entity_managers:
em_a:
connection: a
mappings:
AppDba:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity/Dba'
prefix: 'App\Entity'
alias: AppDba
em_b:
connection: b
AppDbb:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity/Dbb'
prefix: 'App\Entity'
alias: AppDbb
em_c:
connection: c
AppDbc:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity/Dbc'
prefix: 'App\Entity'
alias: AppDbc
Теперь возникает проблема.
Когда я запускаю эту команду:
bin / console doctrine: database: create --connection = a
Соответствующая база данных создается с правильным именем и значением по умолчаниюпубличная схема, которая является пустой, также создается.Это нормально, потому что я еще не выполнил команду doctrine:schema:create --em=em_a
.
Но есть также схема с несколькими таблицами внутри, которые также создаются.И эта схема не принадлежит базе данных a , а принадлежит базе данных b .И странно то, что эти таблицы внутри этой неожиданной схемы не настроены ни в одном отображении в моем приложении.Они есть только в существующей базе данных.
Кто-нибудь знает происхождение этой проблемы и как ее решить?
Дополнительная информация:
- Symfony 3.3.18
- PostgreSQL 9.4.17
- доктрина 2.5.9-стабильная
- доктрина dbal v2.6.3
- комплект доктрины 1.9.1