1

我正在尝试在表上进行插入,它抛出了这个错误。但是,它没有向我显示受影响的列。

有谁知道这里发生了什么?

DB2 错误

4

1 回答 1

0

不知何故,您的应用程序或 SQL 正在发送<NULL>到已指定的列"NOT NULL"

我刚刚在我正在编写的应用程序中看到了这一点。考虑下表:

CREATE TABLE "PURCHASE" (
  "PURCHASE_NAME"   VARCHAR(150)    NOT NULL,
  "NOTIFY_FLAG" CHARACTER(1)    NOT NULL,
  "PURCHASE_AMOUNT" DECIMAL(9, 2)
)

以以下方式插入将产生您询问的错误:

INSERT INTO PURCHASE
(PURCHASE_NAME, NOTIFY_FLAG, PURCHASE_AMOUNT) 
VALUES 
('Lotus Organizer version 3.1', null, 12743.27);

您的屏幕截图显示您的数据库客户端未向您发送列信息。它应该看起来像这样:

ERROR [23502] [IBM][DB2/AIX64] SQL0407N  Assignment of a NULL value to a NOT NULL
column "TBSPACEID=15, TABLEID=11, COLNO=16" is not allowed.

要对此进行调试,您需要以某种方式捕获您的应用程序正在生成的 SQL,并通过更直接的 DB 客户端运行它,例如 TOAD ( http://www.quest.com/database-management/ )。

于 2013-06-18T23:42:27.167 回答