พอดีเจอมาหลายครั้งแต่ แต่ก็ยังไม่ได้เขียนสักที ในระหว่างเราพัฒนาโปรแกรมเชื่อมต่อกับฐานข้อมูล 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.