新添加的 table 不起作用
Newly added table not working
我正在使用 DB2 9.7 数据库。我将 SquirrelSQL 用于 GUI 目的。然而,自从我对我的 table 之一应用了 alter 命令后,我开始面临 table 的问题,并且任何进一步的 select 查询都要求 "reorg" table。为了克服这个问题,我重命名了旧的 table 并创建了新的 table。但是,创建查询在 Squirrel 中没有正确执行,因此为我的 STS 下载了 DBViewer(Spring Source Tool Suite。)我从 DBViewer 执行了创建 table 查询,但现在的问题既不是我可以从我的 JAVA 代码或 Squirrel 访问新创建的 table。
我完全不知道可能是什么问题。有人知道吗?
以下是我的 table 的结构:
CREATE TABLE DB2ADMIN.CERT
(
CERT_ID CHAR(36) NOT NULL,
CERT_CD CHAR(1) NOT NULL,
CERT_NBR CHAR(10) NOT NULL,
CERT_REQ_USR_CD_1 CHAR(10),
CERT_REQ_USR_CD_2 CHAR(10),
CERT_REQ_USR_CD_3 CHAR(10),
CERT_REQ_USR_CD_4 CHAR(10),
CERT_REQ_USR_TXT_1 VARCHAR(255),
CERT_REQ_USR_TXT_2 VARCHAR(255),
CERT_REQ_USR_TXT_3 VARCHAR(255),
CERT_REQ_USR_TXT_4 VARCHAR(255),
CERT_REQ_USR_TXT_5 VARCHAR(255),
CERT_REQ_USR_TXT_6 VARCHAR(255),
CERT_REQ_USR_TXT_7 VARCHAR(255),
CERT_REQ_USR_TXT_8 VARCHAR(255),
CERT_REQ_USR_TXT_9 VARCHAR(255),
CERT_REQ_USR_DT DATE,
LAST_MDF_USER_ID CHAR(25) NOT NULL,
LAST_MDF_ACY_TS TIMESTAMP(26,6) NOT NULL,
CONSTRAINT SQL111017085116710 PRIMARY KEY (CERT_ID)
);
在我的 alter 查询中,我将 CERT_NBR 的数据类型从 INTEGER 更改为 CHAR
使用命令;
ALTER TABLE CERT ALTER COLUMN CERT_NBR SET DATA TYPE INTEGER
any further select queries asked for "reorg" of the table.
这是在 DB2 中更改 tables 后的常见情况。它应该通过调用简单地解决:
reorg table table-name;
这是命令行命令,而不是 sql 语句,但您可以通过 SQL 使用 admin_cmd
过程调用它:
call sysproc.admin_cmd('reorg table table-name');
我不确定您为什么无法访问新 table。错误消息应该可以帮助您解决这个问题。一些可能性:
- 您创建的用户名与您尝试访问它的用户名不同。
- 您从未在创建 table 语句后提交。
- 出了点问题,table 最终处于无法操作的状态。
我正在使用 DB2 9.7 数据库。我将 SquirrelSQL 用于 GUI 目的。然而,自从我对我的 table 之一应用了 alter 命令后,我开始面临 table 的问题,并且任何进一步的 select 查询都要求 "reorg" table。为了克服这个问题,我重命名了旧的 table 并创建了新的 table。但是,创建查询在 Squirrel 中没有正确执行,因此为我的 STS 下载了 DBViewer(Spring Source Tool Suite。)我从 DBViewer 执行了创建 table 查询,但现在的问题既不是我可以从我的 JAVA 代码或 Squirrel 访问新创建的 table。
我完全不知道可能是什么问题。有人知道吗?
以下是我的 table 的结构:
CREATE TABLE DB2ADMIN.CERT
(
CERT_ID CHAR(36) NOT NULL,
CERT_CD CHAR(1) NOT NULL,
CERT_NBR CHAR(10) NOT NULL,
CERT_REQ_USR_CD_1 CHAR(10),
CERT_REQ_USR_CD_2 CHAR(10),
CERT_REQ_USR_CD_3 CHAR(10),
CERT_REQ_USR_CD_4 CHAR(10),
CERT_REQ_USR_TXT_1 VARCHAR(255),
CERT_REQ_USR_TXT_2 VARCHAR(255),
CERT_REQ_USR_TXT_3 VARCHAR(255),
CERT_REQ_USR_TXT_4 VARCHAR(255),
CERT_REQ_USR_TXT_5 VARCHAR(255),
CERT_REQ_USR_TXT_6 VARCHAR(255),
CERT_REQ_USR_TXT_7 VARCHAR(255),
CERT_REQ_USR_TXT_8 VARCHAR(255),
CERT_REQ_USR_TXT_9 VARCHAR(255),
CERT_REQ_USR_DT DATE,
LAST_MDF_USER_ID CHAR(25) NOT NULL,
LAST_MDF_ACY_TS TIMESTAMP(26,6) NOT NULL,
CONSTRAINT SQL111017085116710 PRIMARY KEY (CERT_ID)
);
在我的 alter 查询中,我将 CERT_NBR 的数据类型从 INTEGER 更改为 CHAR
使用命令;
ALTER TABLE CERT ALTER COLUMN CERT_NBR SET DATA TYPE INTEGER
any further select queries asked for "reorg" of the table.
这是在 DB2 中更改 tables 后的常见情况。它应该通过调用简单地解决:
reorg table table-name;
这是命令行命令,而不是 sql 语句,但您可以通过 SQL 使用 admin_cmd
过程调用它:
call sysproc.admin_cmd('reorg table table-name');
我不确定您为什么无法访问新 table。错误消息应该可以帮助您解决这个问题。一些可能性:
- 您创建的用户名与您尝试访问它的用户名不同。
- 您从未在创建 table 语句后提交。
- 出了点问题,table 最终处于无法操作的状态。