فئة الخطأ TABLE_OR_VIEW_NOT_FOUND
تعذر العثور على الجدول أو طريقة العرض <relationName>
. تحقق من التدقيق الإملائي وصحة المخطط والكتالوج.
إذا لم تقم بتأهيل الاسم بمخطط، فتحقق من إخراج current_schema() أو قم بتأهيل الاسم بالمخطط والكتالوج الصحيحين.
للتسامح مع الخطأ عند الإفلات، استخدم DROP VIEW IF EXISTS أو DROP TABLE IF EXISTS.
معلمات
- relationName: اسم العلاقة المحددة (جدول أو طريقة عرض) التي لا يمكن العثور عليها.
تفسير
تتكون الجداول وطرق العرض المستمرة من ثلاثة أجزاء اسم: <catalog>.<schema>.<relation>
.
إذا لم تحدد جميع الأجزاء الثلاثة من الاسم، يتم إكماله ضمنيا باستخدام الكتالوج الحالي أو المخطط الحالي.
هذا مشابه للطريقة التي يؤثر بها دليل العمل لنظام الملفات على الملفات التي يمكنك رؤيتها، ما لم تحدد المسار بالكامل.
توجد طرق العرض المؤقتة أو تعبيرات الجدول الشائعة (CTE) فقط داخل جلسة العمل أو الاستعلام ويجب ألا تكون مؤهلة أبدا.
السبب الأكثر شيوعا لعدم العثور على جدول أو طريقة عرض هو:
- الكائن ببساطة غير موجود.
- تم خطأ إملائي في اسم الكائن أو المخطط أو الكتالوج.
- الكائن غير موجود في المخطط الحالي.
- لا يمكن للمستخدم الوصول إلى الكائن وبالتالي لا يمكنه رؤيته.
التخفيف
يعتمد التخفيف من الخطأ على السبب:
هل قمت بتهجئة الجدول أو طريقة العرض أو المخطط أو اسم الكتالوج بشكل غير صحيح؟
تصحيح الإملاء.
هل لم تتأهل الاسم بالكامل ولا تتطابق نتيجة
VALUES current_schema()
مع الاسم المؤهل للجدول أو طريقة العرض؟قم بتأهيل
relationName
بشكل صريح مع المخطط والكتالوج الخاصين به، أو قم بإصدارUSE SCHEMA
أمر لتعيين المخطط الضمني المطلوب.هل أشرت إلى طريقة عرض مؤقتة، ولكنها كانت في جلسة سابقة أو منتهية الصلاحية أو مختلفة؟
أعد إنشاء طريقة العرض المؤقتة باستخدام
CREATE TEMPORARY VIEW <relationName> …
، أو قم بالتبديل إلى استخدام طريقة عرض دائمة.هل أشرت إلى تعبير جدول شائع (CTE)، ولكنه خارج النطاق؟
انقل تعريف CTE إلى الاستعلام الخارجي. هذه هي بداية العبارة، لذلك تكون مرئية في كل مكان داخل العبارة.
هل تريد إصدار عبارة DDL، مثل "DROP TABLE" فقط في حالة وجود الكائن؟
قم بإصدار العبارة
IF EXISTS
باستخدام عبارة ، مثل:DROP TABLE <relationName> IF EXISTS
.هل تعرف أن الكائن موجود، ولكن لا يمكنك رؤيته في
SHOW TABLE
؟اتصل بالمسؤول للحصول على حق الوصول إلى الجدول الممنوح. قد يحتاج هذا إلى تضمين الوصول إلى المخطط والكتالوج أيضا.
من غير الواضح لماذا لا يمكنك حل الجدول أو طريقة العرض؟
راجع تحليل الجدول وعرضه للحصول على وصف مفصل لتحليل الاسم.
امثله
-- 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;