Aracılığıyla paylaş


TABLE_OR_VIEW_NOT_FOUND hata durumu

SQLSTATE : 42P01

Tablo veya görünüm <relationName> bulunamıyor. Şemanın 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ında hatayı tolere etmek için DROP VIEW VARSA veya DROP TABLE VARSA kullanın.

Parametreler

  • relationName: Belirtilen ilişkinin (tablo veya görünüm) adı bulunamadı.

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 otomatik 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 bulamamanın 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 azaltılması 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.

  • İsmi tam olarak belirtmediniz ve VALUES current_schema()'in sonucu, tablonun veya görünümün tam adıyla eşleşmiyor mu?

    relationName şeması ve kataloğuyla açıkça niteleyin veya istenen örtük şemayı ayarlamak için bir USE SCHEMA komutu gönderin.

  • Geçici bir görünüme mi başvurdunuz, ancak bu görünüm daha önceki, süresi dolmuş veya farklı bir oturumda mıydı?

    CREATE TEMPORARY VIEW \<relationName\> …kullanarak geçici görünümü yeniden oluşturun veya kalıcı bir görünüm kullanmaya geçin.

  • Ortak bir tablo ifadesine (CTE) başvurdunuz ama kapsam dışı mı?

    CTE'nin tanımını en dıştaki sorguya taşıyın. Bu, ifade için başlangıçtır, bu yüzden ifade boyunca her yerde görünür.

  • Nesnenin mevcut olması durumunda 'DROP TABLE' gibi bir DDL deyimi vermek istiyor musunuz?

    IF EXISTS yan tümcesini kullanarak ifadeyi yayın, örneğin: DROP TABLE \<relationName\> IF EXISTS.

  • Nesnenin var olduğunu biliyor, ancak SHOW TABLEiçinde göremiyor musunuz?

    Verilen tabloya erişmek 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?

    İsim çözümlemesinin ayrıntılı açıklaması için Tablosuna ve çözünürlük bakınız.

Ö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;