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

Symfony 5使用Doctrine报未定义类常量JSON_ARRAY,无法定位错误文件

报错原因

JSON_ARRAY 是Doctrine DBAL 2.x版本提供的字段类型常量,在DBAL 3.0及以上版本中已被正式移除,替代方案为统一的json类型。该报错通常由旧版本缓存、第三方依赖未适配DBAL新版本、映射配置残留旧类型定义三类原因导致,你全局搜索不到对应代码,大概率是缓存或者第三方依赖中存在旧常量调用。

解决步骤

  • 首先确认当前DBAL版本:执行命令composer show doctrine/dbal查看已安装的DBAL版本,若版本为3.x,先排查项目依赖的第三方Doctrine扩展、字段类型扩展是否已适配DBAL 3.x。
  • 清理Symfony项目缓存:执行命令php bin/console cache:clear,残留的实体映射元数据缓存是该类无源码匹配报错的高频诱因,清理后重试看报错是否消失。
  • 检查Doctrine配置文件:查看config/packages/doctrine.yaml中的doctrine.dbal.types自定义类型配置,若存在关联JSON_ARRAY的配置,替换为Doctrine\DBAL\Types\Types::JSON,注意对应文件要先引入该类的命名空间。
  • 排查非注解格式的实体映射:如果你有使用YAML、XML格式的实体映射文件,检查这类文件中是否存在type: json_array的配置,统一修改为type: json。
  • 兼容方案:如果是第三方依赖未适配DBAL 3.x,可以选择降级DBAL到兼容的2.x版本,在composer.json中指定版本约束为"doctrine/dbal": "^2.13"后执行composer update doctrine/dbal即可。

内容的提问来源于stack exchange,提问作者Alexander Álvarez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:45:06