tidb6.5.11版本更新视图后,没有完整生效,部分查询仍然使用老视图语句

【TiDB 使用环境】生产环境 /测试/ Poc
【TiDB 版本】V6.5.3
【操作系统】CentOS
【部署方式】阿里云ECS上使用K8S部署
【集群数据量】千万级别
【集群节点数】2
【问题复现路径】

  1. 创建一个视图,使用语句CREATE OR REPLACE VIEW isolarerp.ERP_DEP_CODE_PS_MAPPING AS select f1, f2, f3 from ERP_DEP_CODE_PS_MAPPING_old
  2. 使用定时任务构造一张新表ERP_DEP_CODE_PS_MAPPING_new
  3. 更新视图,使用新表CREATE OR REPLACE VIEW isolarerp.ERP_DEP_CODE_PS_MAPPING AS select f1, f2, f3 from ERP_DEP_CODE_PS_MAPPING_new,让业务无需改动SQL的情况下,直接切换到新表查询
    【遇到的问题:问题现象及影响】
    java服务使用ERP_DEP_CODE_PS_MAPPING 视图查询时,报错Table ‘isolarerp.ERP_DEP_CODE_PS_MAPPING_old’ doesn’t exist
    【资源配置】

【复制黏贴 ERROR 报错的日志】
j.sql.SQLException: Schema change caused error: [schema:1146]Table ‘isolarerp.ERP_DEP_CODE_PS_MAPPING_old’ doesn’t exist
【其他附件:截图/日志/监控】


SHOW VIEW isolarerp.ERP_DEP_CODE_PS_MAPPING 看下还是不是old

部分查询?如果是的,说明你更新成功了,看下没成功的应该端连接是不是正确;其次应用重启下试下,清理下缓存

找不到对象的话,看看是不是权限问题

退出重新进下库,在查询试试

重启大法,重启java服务,是不是有缓存

可能是TiDB 视图元数据缓存机制:TiDB 执行 CREATE OR REPLACE VIEW 后,元数据会立即更新,但部分场景(如活跃会话、PD 元数据同步延迟)可能导致短时间内仍读取旧元数据。