Aracılığıyla paylaş


TABLE_OR_VIEW_NOT_FOUND hata sınıfı

SQLSTATE: 42P01

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 bir USE 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 TABLEmusunuz?

    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;