V8.1.0创建视图没有列元数据(怀疑是BUG)

【 TiDB 使用环境】生产环境
【 TiDB 版本】V8.1.0
【复现路径】可以参考下面的SQL创建视图
【遇到的问题:问题现象及影响】创建视图,视图中的列是子查询会导致INFORMATION_SCHEMA.columns中没有对应视图的列元数据信息

【附件:截图/日志/监控】

create or replace view v_dws_test_5 as
select sysj,
       (SELECT `b`.`detail_code` AS `detail_code`
        FROM `raw`.`ythszzy_stdc_current_detail` AS `b`
        WHERE `b`.`group_id` = 5664039078002690
        limit 1) AS `xxdm`
from model.dwd_fw_yktjylssjzl;

要查的view是不是粘错了?

截错图了,重新来

view 创建成功了吗?
我这8.1.1测试没有问题。

视图创建成功了的,在INFORMATION_SCHEMA.views中能查到,那我装一个8.1.1试试

跟大小写没有关系吗?

  1. 尝试重写视图:如果可以,尝试将子查询移到外层查询中,避免在视图定义中使用子查询。例如,可以先创建一个临时表或直接在 SELECT 语句中做 JOIN:

sqlCopy Code

CREATE OR REPLACE VIEW v_dws_test_5 AS
SELECT sysj, b.detail_code AS xxdm
FROM model.dwd_fw_yktjylssjzl a
JOIN raw.ythszzy_stdc_current_detail b ON b.group_id = 5664039078002690
LIMIT 1;
  1. 查询元数据的方式:在创建视图后,稍等片刻再查询 INFORMATION_SCHEMA.columns,以确保元数据已更新。
  2. 检查日志:查看 TiDB 的日志文件,看看在创建视图时是否有任何错误或警告信息。
1 个赞

没关系喃,我把子查询干掉,就正常了

感谢你的意见,这么干确实可以绕过这个BUG

改写sql也是个思路,能解决就行。

@TiDBer_ONEqDo1v 您好,建议升级到 8.1.1 使用, 这个是已知问题已经在修复Warning 1356 is returned by querying information_schema.columns when a scalar subquery is used as a column in view definition · Issue #54343 · pingcap/tidb · GitHub

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。