foutmelding klasse table_or_view_not_found
Kan de tabel of weergave <relationName>
niet vinden. Controleer de spelling en juistheid van het schema en de catalogus.
Als u de naam niet hebt gekwalificeerd met een schema, controleert u de current_schema() uitvoer of kwalificeren u de naam met het juiste schema en de juiste catalogus.
Om de fout bij verwijderen te tolereren, gebruikt u DROP VIEW IF EXISTS of DROP TABLE IF EXISTS.
Parameters
- relationName: de naam van de opgegeven relatie (tabel of weergave) die niet kan worden gevonden.
Uitleg
Persistente tabellen en weergaven bestaan uit drie naamonderdelen: <catalog>.<schema>.<relation>
.
Als u niet alle drie de onderdelen van de naam opgeeft, wordt deze impliciet voltooid met behulp van de huidige catalogus of het huidige schema.
Dit is vergelijkbaar met de manier waarop de werkmap van uw bestandssysteem van invloed is op welke bestanden u kunt zien, tenzij u het pad volledig opgeeft.
Tijdelijke weergaven of algemene tabelexpressies (CTE) bestaan alleen binnen de sessie of query en mogen nooit worden gekwalificeerd.
De meest voorkomende reden voor het niet vinden van een tabel of weergave zijn:
- Het object bestaat gewoon niet.
- De objectnaam, het schema of de catalogus is verkeerd gespeld.
- Het object bevindt zich niet in het huidige schema.
- De gebruiker heeft geen toegang tot het object en kan het daarom niet zien.
Mitigatie
De beperking van de fout is afhankelijk van de oorzaak:
Hebt u de tabel- of weergave-, schema- of catalogusnaam onjuist gespeld?
Corrigeer de spelling.
Heb je de naam niet volledig gekwalificeerd en komt het resultaat van
VALUES current_schema()
niet overeen met de gekwalificeerde naam van de tabel of view?Kwalificeer de
relationName
expliciet met het bijbehorende schema en de bijbehorende catalogus, of gebruik eenUSE SCHEMA
-opdracht om het gewenste impliciete schema in te stellen.Hebt u verwezen naar een tijdelijke weergave, maar deze was in een vorige, verlopen of andere sessie?
Maak de tijdelijke weergave opnieuw met behulp van
CREATE TEMPORARY VIEW <relationName> …
of schakel over naar een permanente weergave.Hebt u verwezen naar een algemene tabelexpressie (CTE), maar valt deze buiten de context?
Verplaats de definitie van de CTE naar de buitenste query. Dat is het begin van de instructie, dus het is overal in de instructie zichtbaar.
Wilt u een DDL-instructie uitgeven, zoals 'DROP TABLE' voor het geval het object bestaat?
Geef de verklaring uit met de
IF EXISTS
-clausule, zoals:DROP TABLE <relationName> IF EXISTS
.Weet u dat het object bestaat, maar u kunt het niet zien in
SHOW TABLE
?Neem contact op met de beheerder om toegang te krijgen tot de tabel die is verleend. Dit moet mogelijk ook toegang tot het schema en de catalogus bevatten.
Het is onduidelijk waarom u de tabel of weergave niet kunt oplossen?
Raadpleeg Tabel en bekijk resolutie voor een gedetailleerde beschrijving van de naamomzetting.
Voorbeelden
-- 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;