Pimcore 6.9迁移命名策略命令报错,无法升级至10.x求解决
问题
我有一个版本为6.9的Pimcore实例,其可编辑项命名策略设置为legacy:
pimcore: documents: editables: naming_strategy: legacy
想要升级至10.x版本(该版本要求使用nested命名策略),执行控制台命令bin/console pimcore:documents:migrate-naming-strategy时出现错误:
The migration strategy "render" does not exist
查看代码后发现问题出在命令无法从Symfony容器中获取所需服务:
$strategyId = 'pimcore.document.tag.naming.migration.strategy.render'; $container->has($strategyId)
尝试将服务pimcore.document.tag.naming.migration.strategy.render设置为公共服务,以及降级Pimcore到更低版本,都未能解决问题。
解决方案
- 升级至6.9系列最新补丁版本:确保你的Pimcore 6.9至少升级到6.9.12及以上,早期6.9版本存在迁移策略服务未正确注册的BUG。
- 手动注册缺失服务:在项目的
config/services.yaml中添加以下服务配置,确保服务能被容器识别:
services: pimcore.document.tag.naming.migration.strategy.render: class: Pimcore\Document\Tag\Naming\Migration\Strategy\RenderStrategy public: true arguments: - '@Pimcore\Document\Tag\Naming\LegacyNamingStrategy' - '@Pimcore\Document\Tag\Naming\NestedNamingStrategy'
- 清除Symfony缓存:执行命令
bin/console cache:clear --env=prod(根据实际运行环境调整参数),强制容器重新加载配置。 - 重新执行迁移命令:再次运行
bin/console pimcore:documents:migrate-naming-strategy,此时服务应该能被正常获取,迁移可顺利执行。 - 验证迁移结果:完成后检查文档可编辑项的命名格式是否切换为nested,并将
config/packages/pimcore.yaml中的naming_strategy设置改为nested,为后续升级10.x做准备。
内容的提问来源于stack exchange,提问作者KoviNET
相关产品推荐
相关产品推荐

