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

Symfony 6.1升级至6.2后元数据存储过期问题求助

Symfony 6.1升级6.2后Doctrine迁移元数据存储报错的解决方案

针对你遇到的"The metadata storage is not up to date..."报错,核心原因是doctrine_migration_versions表的platform_options字段值与新版本Doctrine Migrations的预期不符,以下是几种合理的解决办法:

办法一:直接修正数据库字段(快速解决)

  • 登录MySQL执行更新语句,将字段值改为空数组:
UPDATE doctrine_migration_versions SET platform_options = '[]';
  • 执行完成后,再运行命令验证:
    bin/console doctrine:migrations:sync-metadata-storage

办法二:通过自定义迁移修复(规范流程)

  • 生成一个空的迁移文件:
    bin/console make:migration
  • 打开生成的迁移文件,在up方法中添加字段修正逻辑:
public function up(Schema $schema): void
{
    $this->addSql("UPDATE doctrine_migration_versions SET platform_options = '[]';");
}
  • 执行迁移应用修改:
    bin/console doctrine:migrations:migrate
  • 最后同步元数据存储:
    bin/console doctrine:migrations:sync-metadata-storage

办法三:配置层面跳过平台选项检查(预防后续问题)

  • 在config/packages/doctrine_migrations.yaml中添加如下配置,关闭平台选项的校验:
doctrine_migrations:
    # 保留原有其他配置
    storage:
        table_storage:
            check_database_platform: false
  • 这个配置会让Doctrine Migrations跳过平台选项的一致性检查,避免版本升级时因字段默认值差异触发报错

问题根源

Symfony 6.2配套的Doctrine Migrations版本调整了元数据存储的平台选项处理逻辑,6.1版本生成的表中platform_options带有charset和collation配置,而新版本预期该字段为空数组,导致校验失败。

内容的提问来源于stack exchange,提问作者Atyz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:55:21