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

Drupal 9打开媒体页面触发TypeError错误的排查求助

Drupal媒体页面打开报错解决方案

问题描述

打开Drupal媒体页面时触发TypeError,核心错误信息如下:

TypeError: Argument 1 passed to Drupal\Core\Entity\Sql\DefaultTableMapping::requiresDedicatedTableStorage() must implement interface Drupal\Core\Field\FieldStorageDefinitionInterface, null given, called in E:\work\xampp_74\htdocs\Drupal\slac-it\web\core\lib\Drupal\Core\Entity\Sql\DefaultTableMapping.php on line 334 in E:\work\xampp_74\htdocs\Drupal\slac-it\web\core\lib\Drupal\Core\Entity\Sql\DefaultTableMapping.php on line 535

已知前提:

  • 相同代码连接新数据库时可正常运行
  • 新旧数据库均存在media表
  • 当前使用Drupal官方media模块

解决方案

  • 检查字段存储定义一致性:新、旧数据库的media实体字段存储定义可能存在差异。通过drush entity:check命令(或后台「配置→开发→状态报告」)检查实体字段状态,重点确认changed字段的存储定义是否存在(错误栈显示排序操作依赖该字段)。
  • 同步数据库结构:执行数据库更新操作,确保旧数据库的实体结构与代码定义一致。运行drush updatedb命令,或通过后台「配置→开发→数据库更新」页面完成同步。
  • 重建系统缓存:Drupal的实体元数据缓存可能过期,导致无法正确加载字段定义。运行drush cache:rebuild命令,或在后台「配置→开发→性能」页面清除所有缓存。
  • 校验media_field_data表完整性:虽然media表存在,但错误中涉及的media_field_data表可能存在字段缺失或结构异常。对比新旧数据库中该表的结构,确保changed字段存在且类型为int(存储时间戳)。
  • 同步实体配置:若以上步骤无效,可导出新数据库的media实体配置(drush config:export --directory=../config-sync),再导入到旧数据库环境(drush config:import),保证实体配置完全一致。

内容的提问来源于stack exchange,提问作者Bhavesh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:05:29