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

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

SQL Error Message

โดยมีได้มี 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

Query to Find Name by TBSPACEID / TABLEID / COLNO

จาก 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.