Pimcore 6.9.6迁移至10.6.3遇key/value格式错误求助
解决Pimcore 6.9.6升级到10.6.3时的迁移错误
我正在将Pimcore 6.9.6版本升级至10.6.3版本,已手动完成所有文件夹结构修改,执行命令:COMPOSER_MEMORY_LIMIT=-1 composer update 后,迁移过程中出现以下错误:
[error] Migration Pimcore\Bundle\CoreBundle\Migrations\Version20210107103923 failed during Execution. Error: "Please provide select options as associative array with fields "key" and "value"
In Select.php line 206:
Please provide select options as associative array with fields "key" and "value"
环境配置
- PHP 8.1版本
- MySQL 8.0版本
- Composer 2.5版本
相关代码(vendor目录下Select.php)
public function setOptions(?array $options) { if (is_array($options)) { $this->options = []; foreach ($options as $option) { $option = (array)$option; if (!array_key_exists('key', $option) || !array_key_exists('value', $option)) { throw new InvalidArgumentException('Please provide select options as associative array with fields "key" and "value"'); } $this->options[] = $option; } } else { $this->options = null; } return $this; }
问题分析与解决步骤
这个错误的核心是:迁移Version20210107103923中,传递给Select::setOptions()的选项数组不符合格式要求——方法要求每个选项必须是包含key和value字段的关联数组,但实际传入的是普通键值对数组或其他非法格式。
解决步骤:
- 定位迁移文件:找到对应的迁移文件(如果是项目自定义迁移,路径为
src/Migrations/Version20210107103923.php;如果是Pimcore核心迁移,在vendor/pimcore/core-bundle/src/Migrations目录下),查找调用setOptions()的代码块。 - 修正选项格式:将原有的选项数组转换为要求的结构。
例如原代码如果是:
需修改为:$select->setOptions([ 'draft' => '草稿', 'published' => '已发布' ]);$select->setOptions([ ['key' => 'draft', 'value' => '草稿'], ['key' => 'published', 'value' => '已发布'] ]); - 检查依赖兼容性:如果是核心迁移报错,可能是跨版本升级导致的依赖不匹配。执行
composer update pimcore/core-bundle --with-all-dependencies,确保核心bundle版本与10.6.3完全匹配。 - 遵循逐步升级流程:Pimcore 6到10版本跨度较大,不建议直接跳级。建议按照官方指南先升级到7.x,再依次升级到8.x、9.x,最后到10.6.3,减少兼容性问题。
内容的提问来源于stack exchange,提问作者Thejaswini
相关产品推荐
相关产品推荐

