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
相关产品推荐
相关产品推荐

