سؤال

لذا، لدي مثيلان لقاعدة البيانات، أحدهما للتطوير بشكل عام، والآخر تم نسخه من التطوير لاختبارات الوحدة.

لقد تغير شيء ما في قاعدة بيانات التطوير ولا أستطيع اكتشافه، ولا أعرف كيف أرى ما هو مختلف.

عندما أحاول الحذف من جدول معين، على سبيل المثال:

delete from myschema.mytable where id = 555

أحصل على الاستجابة العادية التالية من قاعدة بيانات اختبار الوحدة التي تشير إلى عدم حذف أي صف:

SQL0100W لم يتم العثور على صف لـ FETCH أو UPDATE أو DELETE؛أو تكون نتيجة الاستعلام جدولاً فارغاً.SQLSTATE = 02000

ومع ذلك، فشل حذف قاعدة بيانات التطوير على الإطلاق بسبب الخطأ التالي:

DB21034E تمت معالجة الأمر كبيان SQL لأنه لم يكن أمر معالج سطر الأوامر صالحًا.أثناء معالجة SQL تم إرجاع:SQL0440N لم يتم العثور على روتين معتمد يسمى "=" من النوع "FUNCTION" يحتوي على وسائط متوافقة.SQLSTATE = 42884

أفضل تخميني هو أن هناك بعض المشغلات أو طرق العرض التي تمت إضافتها أو تغييرها والتي تسبب المشكلة، لكن ليس لدي أي فكرة عن كيفية العثور على المشكلة...هل واجه أي شخص هذه المشكلة أو يعرف كيفية معرفة جذر المشكلة؟

(لاحظ أن هذه قاعدة بيانات DB2)

هل كانت مفيدة؟

المحلول

حسنًا، بتطبيق النبوءة العظيمة على هذا السؤال، توصلت إلى:

http://bytes.com/forum/thread830774.html

يبدو أنه يشير إلى أن جدولًا آخر يحتوي على مفتاح خارجي يشير إلى المفتاح الذي به مشكلة، وعندما يتم إسقاط FK الموجود على الجدول الآخر، يجب أن تعمل عملية الحذف مرة أخرى.(من المفترض أنه يمكنك إعادة إنشاء المفتاح الخارجي أيضًا)

هل هذا يساعد أي شيء؟

نصائح أخرى

قد تكون لديك معاملة مفتوحة على قاعدة بيانات التطوير... وهذا ما يجعلني أستخدم SQL Server أحيانًا

هل نوع المعرف متوافق مع 555؟أم أنه تم تغييره إلى نوع غير صحيح؟

وبدلاً من ذلك، هل تختفي الوسيطة 555 بطريقة أو بأخرى (على سبيل المثال:إذا كنت تستخدم JDBC ولم يتم تعيين الوسيطات الخاصة بالبيان المعد قبل تنفيذ الاستعلام)؟

هل يمكنك إضافة المزيد لسؤالك؟يبدو هذا الخطأ وكأن محلل بيان SQL مرتبك جدًا بشأن بيانك.هل يمكنك تحديد هذا الجدول للصف حيث المعرف = 555؟

يمكنك تجربة تشغيل RUNSTATS وREORG TABLE على هذا الجدول، ومن المفترض أن يقوما بفرز الجداول المتزعزعة.

@منبوذ

يعمل التحديد بنفس شرط "حيث" بشكل جيد، ولكن لا يتم حذفه.لا يؤثر أي من جدول التشغيل أو جدول إعادة التنظيم على المشكلة.

@منبوذ

لقد قمنا بالفعل بحل المشكلة للتو، وهذا بالفعل هو ما قلته تمامًا (وجد أحد زملاء العمل نفس الصفحة بالضبط أيضًا).

كان الحل هو إسقاط قيود المفاتيح الخارجية وإعادة إضافتها.

تدوينة أخرى حول الموضوع:

http://www.ibm.com/developerworks/forums/thread.jspa?threadID=208277&tstart=-1

مما يشير إلى أن المشكلة هي تلف في القيد المرجعي، وقد تم إصلاحها بالفعل، أو من المفترض على أي حال، في إصدار أحدث من db2 V9 (الذي لم نستخدمه بعد).

شكرا للمساعدة!

يرجى التحقق من 1.حججك الخاصة بالمشغلات والإجراءات والوظائف وما إلى ذلك.2.نوع البيانات من الحجج.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top