Drupal视图临时更改的数据库存储位置及异常修复咨询
Drupal视图临时更改的存储位置及故障修复方案
一、临时更改的存储位置
首先明确:默认情况下,Drupal视图的未保存临时更改(也就是你在编辑视图时还没点击「保存」的修改)是存在用户的会话(session)数据里,并不会写入到数据库的永久配置表(比如views_view、views_display)。这也是为什么点击「取消」就能快速撤销——它只是丢弃会话里的临时缓存,不会改动数据库里的正式视图配置。
只有当你安装了Views Cache Config这类第三方模块时,临时更改才可能被缓存到cache_views或其他自定义缓存表,但这不属于默认行为。
二、针对你遇到的视图故障的解决方案
你已经尝试了清理cache_views、替换views_display、禁用模块,但问题依然存在,那可以试试下面这些更针对性的方法:
清除会话与全量缓存
既然临时更改存在会话里,直接重置会话就能清除残留的临时配置:- 退出当前账号再重新登录;
- 进入后台「配置 > 开发 > 清除缓存」,选择「清除所有缓存」(不要只清视图缓存),这会重置所有用户的会话和全站缓存数据。
检查并修复视图配置表的一致性
你替换了views_display,但views_view表的配置可能和它不一致,导致残留错误配置:- 如果是Drupal 8+:用Drush命令导出视图配置
drush config:export --destination=/tmp,找到对应视图的views.view.YOUR_VIEW_NAME.yml文件,查看display节点下是否包含那些broken的字段/筛选器,清理后再用drush config:import重新导入; - 如果是Drupal 7:用
drush views-export YOUR_VIEW_NAME导出视图代码,手动移除错误的handler引用,再用drush views-import重新导入; - 直接操作数据库(记得先备份!):查看
views_view表中对应视图的display字段(序列化数据),如果里面有不存在的字段引用,手动清理掉。
- 如果是Drupal 8+:用Drush命令导出视图配置
修复Broken/Missing Handler
那些显示为「Broken/missing handler」的字段,本质是视图配置引用了已被禁用/删除的模块或字段类型:- 检查最近是否禁用/卸载过模块,尤其是提供这些字段的第三方模块或自定义模块;
- 用Drush命令自动修复:Drupal 8+执行
drush views:repair YOUR_VIEW_NAME,Drupal 7执行drush views-repair YOUR_VIEW_NAME,这个命令会自动移除配置中无效的handler引用。
重置视图的全部配置
如果你有该视图的备份配置(比如之前导出的代码):- 备份当前
views_view和views_display表中对应视图的记录; - 删除这两个表中该视图的所有记录;
- 重新导入备份的视图配置,或用Drush命令重建视图。
- 备份当前
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

