[DB2] หา Table / Column ตาม SQL Error Message

พอดีเจอมาหลายครั้งแต่ แต่ก็ยังไม่ได้เขียนสักที ในระหว่างเราพัฒนาโปรแกรมเชื่อมต่อกับฐานข้อมูล DB2 บ่อยครั้งมักมี Error Message ของตัว SQL แล้วทีนี้ เราจะรู้ได้อย่างไรว่ามัน Error ที Table ไหน เพื่อทีจะได้หาสาเหตุได้อย่างรวดเร็วครับ โดยมีได้มี Error Message ดังนี้

ERROR [23502] [IBM][DB2/NT64] SQL0407N  Assignment of a NULL value to a NOT NULL column "TBSPACEID=2, TABLEID=1111, COLNO=7" is not allowed.

จากตัวอย่าง ERROR ที่แจ้งมาพบว่ามี Keyword 3 ตัวที่เราสามารถนำไปหาได้ว่ามันเกิด Error จาก Table ไหน ดังนี้

  • TBSPACEID=2
  • TABLEID=1111
  • COLNO=7

จาก Keyword เหล่านี้ เราสามารถที่รายละเอียดได้จาก Schema SYSCAT (เป็น View ที่ทาง IBM ให้เราสามารถ Query ดูได้ครับ) โดย Query ที่ได้จะเป็น ดังนี้ครับ

SELECT C.TABSCHEMA
     , C.TABNAME
     , C.COLNAME
FROM SYSCAT.TABLES AS T
INNER JOIN SYSCAT.COLUMNS AS C
   ON C.TABSCHEMA = T.TABSCHEMA
      AND C.TABNAME = T.TABNAME
WHERE T.TBSPACEID = 2
  AND T.TABLEID = 1111
  AND C.COLNO = 7

ผลลัพธ์ของ Query ที่ได้ครับ


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.