教义:迁移:迁移。元数据存储不是最新的,请运行 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 命令修复此问题的主要内容,如果未能解决你的问题,请参考以下文章
如何将 hive derby 元存储迁移到 postgres 元存储