教义:迁移:迁移。元数据存储不是最新的,请运行 sync-metadata-storage 命令修复此问题

Posted

技术标签:

【中文标题】教义:迁移:迁移。元数据存储不是最新的,请运行 sync-metadata-storage 命令修复此问题【英文标题】:Doctrine:migrations:migrate. The metadata storage is not up to date, please run the sync-metadata-storage command to fix this issue 【发布时间】:2020-10-07 03:10:21 【问题描述】:

当我尝试迁移 doctrine:migrations:migrate 时,我收到此异常:“元数据存储不是最新的,请运行 sync-metadata-storage 命令修复此问题。”。这仅在尝试在生产环境中进行迁移时发生。当我使用doctrine:migrations:sync-meta-storage 命令时,它会抛出相同的异常。

doctrine_migrations.yaml:

doctrine_migrations:
    # List of namespace/path pairs to search for migrations, at least one required
    migrations_paths:
        'DoctrineMigrations': '%kernel.project_dir%/migrations'

    # List of additional migration classes to be loaded, optional
    migrations:

    # Entity manager to use for migrations. This overrides the "connection" setting.
    em: default

    storage:
        # Default (SQL table) metadata storage configuration
        table_storage:
            table_name: 'doctrine_migration_versions'
            version_column_name: 'version'
            version_column_length: 1024
            executed_at_column_name: 'executed_at'
            execution_time_column_name: 'execution_time'

    # Possible values: "BY_YEAR", "BY_YEAR_AND_MONTH", false
    organize_migrations: false

    # Path to your custom migrations template
    custom_template: ~

    # Run all migrations in a transaction.
    all_or_nothing: false

我正在使用 Symfony 5 并使用 DoctrineMigrationsBundle 3.0 版来执行迁移任务。

【问题讨论】:

我在使用 MariaDB 10.3 运行 Symfony 时遇到了完全相同的问题,但我没有找到解决方法。但是,当我切换到 PostgreSQL 时,问题就消失了。 【参考方案1】:

尝试删除 .env 文件中的服务器版本

【讨论】:

当我明确地将 mariadb 的服务器版本添加到 .env 文件时,它适用于我 Symfony 5 => 没有serverVersion 参数也能正常工作【参考方案2】:

我通过在 .env 文件中添加 maria db 的版本来使其工作。

expl: serverVersion = 10.4.11-MariaDB


【讨论】:

【参考方案3】:

您需要更新您的数据库: php bin/console 原则:schema:update --dump-sql 然后 php bin/控制台原则:模式:更新--force 问题解决后可以举报

【讨论】:

最好先刷新元数据:php bin/console doctrine:cache:clear-metadata 以确保您使用的是当前注释元数据而不是缓存的元数据。【参考方案4】:

我使用 DDEV 并遇到同样的问题。

.env 文件中的这个配置对我有用……

DATABASE_URL=mysql://db:db@db:3306/db?serverVersion=10.4.11-MariaDB

【讨论】:

以上是关于教义:迁移:迁移。元数据存储不是最新的,请运行 sync-metadata-storage 命令修复此问题的主要内容,如果未能解决你的问题,请参考以下文章

重新运行 Django 数据迁移

如何将 hive derby 元存储迁移到 postgres 元存储

将所有环境迁移到最新版本后,是不是有理由保留 EF 迁移代码?

mysql数据库存储过程数据迁移案例与比较

原CDH或HDP集群到达最新版本CDP的三条路径

原CDH或HDP集群到达最新版本CDP的三条路径