Php 使用symfony4和doctrine设置多个数据库时,如何修复在两个数据库上运行的迁移
我正在尝试为symfony 4.2项目设置第二个数据库。在我运行迁移之前,一切似乎都很正常,所有迁移都在给定的连接上执行,而不是只在创建连接时执行迁移 关于此,my doctrine.yaml如下所示:Php 使用symfony4和doctrine设置多个数据库时,如何修复在两个数据库上运行的迁移,php,symfony,doctrine,yaml,symfony-4.2,Php,Symfony,Doctrine,Yaml,Symfony 4.2,我正在尝试为symfony 4.2项目设置第二个数据库。在我运行迁移之前,一切似乎都很正常,所有迁移都在给定的连接上执行,而不是只在创建连接时执行迁移 关于此,my doctrine.yaml如下所示: doctrine: dbal: default_connection: default connections: default: driver: 'pdo_mysql'
doctrine:
dbal:
default_connection: default
connections:
default:
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
url: '%env(DATABASE_URL)%'
logging:
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
url: '%env(DATABASE_URL_LOG)%'
orm:
auto_generate_proxy_classes: '%kernel.debug%'
default_entity_manager: default
entity_managers:
default:
connection: default
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
logging:
connection: logging
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: false
mappings:
Log:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Log'
prefix: 'App\Log'
alias: Log
php bin/console doctrine:migrations:diff --em=log
php bin/console doctrine:migrations:migrate --em=log
现在,通过此配置,我可以使用--em=log/default参数运行迁移命令,如下所示:
doctrine:
dbal:
default_connection: default
connections:
default:
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
url: '%env(DATABASE_URL)%'
logging:
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
url: '%env(DATABASE_URL_LOG)%'
orm:
auto_generate_proxy_classes: '%kernel.debug%'
default_entity_manager: default
entity_managers:
default:
connection: default
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
logging:
connection: logging
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: false
mappings:
Log:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Log'
prefix: 'App\Log'
alias: Log
php bin/console doctrine:migrations:diff --em=log
php bin/console doctrine:migrations:migrate --em=log
您将得到预期的结果:当我添加--em=Log时,它只为我在src/Log创建的新实体创建一个新的迁移
这是新实体: