You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Doctrine迁移报错:配置键'name'不存在,多数据库迁移如何解决?

解决Doctrine Migrations多数据库迁移配置报错:Migrations configuration key "name" does not exist

问题原因

Doctrine Migrations 3.x 版本(对应你使用的doctrine/doctrine-migrations-bundle 3.1.1)移除了配置文件中的顶级name键,你的配置文件仍保留这个过时配置项,导致执行迁移命令时触发错误。

修复步骤

1. 修正自定义配置文件

删除doctrine_migrations_mysql.yaml中的name行,修正后的配置如下:

migrations_namespace: MigrationsMysql
table_name: migration_versions
migrations_directory: 'MigrationsMysql'

2. (可选)在Symfony Bundle配置中统一管理多数据库迁移

更推荐的方式是直接在Symfony的config/packages/doctrine_migrations.yaml中配置多EntityManager的迁移规则,无需单独的自定义配置文件:

doctrine_migrations:
    migrations_paths:
        # 映射迁移命名空间到对应的目录
        'MigrationsMysql': '%kernel.project_dir%/MigrationsMysql'
        'MigrationsPostgres': '%kernel.project_dir%/MigrationsPostgres'
    # 为每个EntityManager配置独立的迁移参数
    managers:
        mysql:
            em: manager_mysql
            name: 'Doctrine Mysql Migrations'
            table_name: migration_versions
        postgres:
            em: manager_postgres
            name: 'Doctrine Postgres Migrations'
            table_name: migration_versions

3. 执行迁移的正确命令

  • 如果使用修正后的自定义配置文件,命令保持不变:
    php bin/console doctrine:migrations:migrate --em=manager_mysql --configuration=./config/migration_conf/doctrine_migrations_mysql.yaml
    
  • 如果使用统一Bundle配置,命令可简化为:
    # MySQL迁移
    php bin/console doctrine:migrations:migrate --manager=mysql
    # PostgreSQL迁移
    php bin/console doctrine:migrations:migrate --manager=postgres
    

额外说明

你的旧配置之前能正常工作,大概率是因为当时使用的是Doctrine Migrations 2.x版本,该版本允许顶级name键;升级到3.x版本后配置结构发生变化,导致旧配置不再兼容。

内容的提问来源于stack exchange,提问作者shuba.ivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 18:32:34