TABLE_OR_VIEW_NOT_FOUND hata sınıfı
Tablo veya görünüm <relationName>
bulunamıyor. Şema ve kataloğun yazımını ve doğruluğunu doğrulayın.
Adı bir şemayla nitelemediyseniz, current_schema() çıkışını doğrulayın veya adı doğru şema ve katalogla niteleyin.
Bırakma sırasındaki hatayı tolere etmek için DROP VIEW IF EXISTS veya DROP TABLE IF EXISTS kullanın.
Parametre
- relationName: Bulunamayan belirtilen ilişkinin (tablo veya görünüm) adı.
Açıklama
Kalıcı tablolar ve görünümler üç ad bölümünden oluşur: <catalog>.<schema>.<relation>
.
Adın üç bölümünü de belirtmezseniz, geçerli katalog veya geçerli şema kullanılarak örtük olarak tamamlanır.
Bu, yolu tam olarak belirtmediğiniz sürece dosya sisteminizin çalışma dizininin hangi dosyaları görebileceğinizi nasıl etkilediğine benzer.
Geçici görünümler veya ortak tablo ifadeleri (CTE) yalnızca oturum veya sorgu içinde bulunur ve hiçbir zaman nitelenmemelidir.
Tablo veya görünüm bulamama nedenlerinin en yaygın nedeni şunlardır:
- Nesne basitçe mevcut değildir.
- Nesne adı, şema veya katalog yanlış yazılmış.
- Nesne geçerli şemada değil.
- Kullanıcının nesneye erişimi yoktur ve bu nedenle nesneyi göremez.
Azaltma
Hatanın hafifletilmesi nedene bağlıdır:
Tablo veya görünüm, şema veya katalog adını yanlış mı yazdınız?
Yazımı düzeltin.
Adı tam olarak nitelemediniz ve sonucu
VALUES current_schema()
tablonun veya görünümün tam adıyla eşleşmiyor mu?öğesini şeması ve kataloğuyla açıkça niteleyin
relationName
veya istenen örtük şemayı ayarlamak için birUSE SCHEMA
komut gönderin.Geçici bir görünüme başvurduysanız ancak bu görünüm önceki, süresi dolmuş veya farklı bir oturumda mıydı?
kullanarak
CREATE TEMPORARY VIEW <relationName> …
geçici görünümü yeniden oluşturun veya kalıcı bir görünüm kullanarak geçiş yapın.Ortak bir tablo ifadesine (CTE) başvurduysanız ama kapsam dışında mı?
CTE tanımını en dıştaki sorguya taşıyın. Bu deyiminin başlangıcıdır, bu nedenle deyiminin içinde her yerde görünür.
Nesnenin mevcut olması durumunda 'DROP TABLE' gibi bir DDL deyimi vermek istiyor musunuz?
deyimini şu şekilde yan tümcesini
IF EXISTS
kullanarak yayınlar:DROP TABLE <relationName> IF EXISTS
.Nesnenin var olduğunu biliyor ama içinde göremiyor
SHOW TABLE
musunuz?Verilen tabloya erişim elde etmek için yöneticinize başvurun. Bunun şemaya ve kataloğa erişimi de içermesi gerekebilir.
Tabloyu veya görünümü neden çözümleyemediğiniz belirsiz mi?
Ad çözümlemesinin ayrıntılı açıklaması için Tablo ve görünüm çözünürlüğü konusuna bakın.
Örnekler
-- The table is located in othercat.someschema
> SELECT count(*) FROM t;
[TABLE_OR_VIEW_NOT_FOUND] The table or view `t` cannot be found.
> VALUES current_schema();
default
-- Change the current schema
> USE SCHEMA othercat.someschema;
> SELECT count(*) FROM T;
1
-- Alternatively qualify the table
> SELECT count(*) FROM othercat.someschema.t;
1
-- A reference to a CTE in the wrong scope:
> SELECT count(1) FROM (WITH v(c1) AS (VALUES (1)) VALUES(2)) AS t(c1), v;
[TABLE_OR_VIEW_NOT_FOUND] The table or view `v` cannot be found.
-- Move the CTE to top level
> WITH v(c1) AS (VALUES (1))
SELECT count(1) FROM VALUES(2) AS t(c1), v;
1
-- Dropping a non existing view
> DROP VIEW v;
[TABLE_OR_VIEW_NOT_FOUND] The table or view `v` cannot be found.
> DROP VIEW IF EXISTS v;