TABLE_OR_VIEW_NOT_FOUND错误类

SQLSTATE: 42 p01

表或视图< relationName >不能被发现。的拼写和正确性验证模式和目录。

如果你没有资格名称模式,验证current_schema()输出,或与正确的模式限定名称和目录。

容忍错误滴水使用视图上如果存在或删除表的存在。

参数

  • relationName:指定名称的关系(表或视图),不能被发现。

解释

保存表和视图包含三名部分:<目录>。<模式>。<关系>。如果你不指定名称的所有三个部分,这是隐式地使用当前目录或当前模式完成。这是类似于你的工作目录文件系统如何影响哪些文件可以看到,除非你完全指定路径。

临时视图或公共表表达式(CTE)只存在在会话或查询和绝不是合格的。

最常见的原因没有找到一个表或视图:

  • 根本不存在的对象。

  • 对象名称、模式或目录是拼写错误。

  • 对象不是位于当前模式。

  • 用户没有访问对象,因此看不见它。

缓解

错误的减排取决于原因:

  • 你拼写的表或视图、模式或目录名称不正确吗?

    正确的拼写。

  • 你没有完全限定的名称和结果的值current_schema ()”不匹配的限定名称表或视图?

    明确的资格relationName模式和目录,或发出“使用模式”命令来设置所需的隐式模式。

  • 你引用一个临时观点,但在之前,过期,或不同的会话吗?

    重新创建临时视图使用“创建临时查看< relationName >…”,或切换到使用一个永久的视图。

  • 你引用一个公共表表达式(CTE),但它的范围?

    CTE的定义移动到最外层查询。这是声明的开始,所以在声明中到处都是可见的。

  • 你想发出一个DDL语句,如“删除表”以防对象存在吗?

    问题声明使用如果存在条款,如:“DROP TABLE < relationName >如果存在”

  • 你知道对象存在,但你不能看到它吗“显示表”吗?

    联系管理员获得访问表。这可能需要包括访问模式和目录。

  • 目前还不清楚为什么你不能解决表或视图?

    表和视图的决议名称解析的详细描述。

例子

——表位于othercat.someschema>选择(*)t;(TABLE_OR_VIEW_NOT_FOUND]视图t不能发现>current_schema();默认的——改变当前的模式>使用模式othercatsomeschema;>选择(*)T;1——或者资格表>选择(*)othercatsomeschemat;1——CTE引用错误的范围:>选择(1)(v(c1)作为((1))(2))作为t(c1),v;(TABLE_OR_VIEW_NOT_FOUND]视图v不能发现——移动CTE顶级>v(c1)作为((1))选择(1)(2)作为t(c1),v;1——删除一个非现有的视图>下降视图v;(TABLE_OR_VIEW_NOT_FOUND]视图v不能发现>下降视图如果存在v;