从Pimcore 6.6升级至6.9.6时遇数据库迁移错误求助
解决Pimcore 6.9.6迁移时JSON数据库类型错误的方法
方法一:注册JSON类型映射
在Pimcore的Doctrine配置文件(Symfony 3/4对应app/config/config.yml,Symfony 5+对应config/packages/doctrine.yaml)中添加类型映射配置,让Doctrine识别MySQL的JSON类型:
doctrine: dbal: types: json: Doctrine\DBAL\Types\JsonType mapping_types: json: json
执行以下命令清除缓存并重新完成更新与迁移:
php bin/console cache:clear COMPOSER_MEMORY_LIMIT=-1 composer update php bin/console doctrine:migrations:migrate
方法二:锁定兼容的Doctrine DBAL版本
Pimcore 6.9.6对Doctrine DBAL版本有特定要求,旧版本DBAL可能不支持MySQL JSON类型。在composer.json中指定兼容版本:
"require": { "doctrine/dbal": "^2.13" }
更新依赖后重新执行迁移:
COMPOSER_MEMORY_LIMIT=-1 composer update doctrine/dbal php bin/console doctrine:migrations:migrate
方法三:临时修改迁移文件
找到出错的迁移文件src/Migrations/Version20201222101114.php,将其中使用json类型的字段替换为MySQL支持的longtext并标记JSON类型:
// 原代码示例 $this->addSql('CREATE TABLE some_table (config JSON NOT NULL)'); // 修改后 $this->addSql('CREATE TABLE some_table (config LONGTEXT NOT NULL COMMENT \'(DC2Type:json)\')');
保存文件后重新执行迁移命令。
内容的提问来源于stack exchange,提问作者Thejaswini
相关产品推荐
相关产品推荐

