【发布时间】:2020-05-13 06:02:12
【问题描述】:
我正在尝试以下列方式在 db2 中删除一个 XML 列。但是每次我这样做时,都会导致错误
create table One(name int, address XML);
alter table One add column age xml;
alter table One drop column age;
Error starting at line : 5 in command -
alter table One drop column age
Error report -
DB2 SQL Error: SQLCODE=-1242, SQLSTATE=42997, SQLERRMC=7, DRIVER=4.11.77
DB2 官方文档表明该问题已在 DB 9.7 中得到修复。我目前正在检查 10.5 和 11.5 版本,但仍然面临同样的问题。 https://www.ibm.com/support/knowledgecenter/en/SSEPEK_11.0.0/xml/src /tpc/db2z_alterxml.html
DB2 文档建议在重组后对表运行 CHECK 挂起状态,但没有可用的命令。
有没有办法解决这个 XML 数据类型的下拉列问题?否则 DB2 默认不允许删除表中的 XML 列?
有人可以就这个问题提出建议吗?
https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.wn.doc/doc/c0055038.html
IBM 建议需要在单个 alter 语句中删除表中的所有 XML 列。这仍然是 10.5 及更高版本的 db2 的限制吗?
【问题讨论】:
-
你的例子没有意义。您有两列,想要删除一个不存在的列?
-
道歉。我错过了在代码块中复制“更改表一添加列年龄”行
-
由于 SQL01242N 有原因码,完整的错误消息是什么?当您在 LUW 上时,为什么要链接到 Db2 z/OS 文档(第一个链接)?请更新
-
@data_henrik,是的,我使用 db2 z/OS。我在以下数据库中
-
数据库:DB2/NT64 10.5.1,DB2 v11.5.0.0。因此,当我有一个包含两个或多个 XML 列的表时,尝试一次只删除其中一个列会导致错误。 DB2 SQL 错误:SQLCODE=-1242, SQLSTATE=42997, SQLERRMC=7, DRIVER=4.11.77。原因码是“7”。所以,想知道这是否是所有 db2 版本的限制。只有当我一次删除所有 XML 列时,错误似乎才得以解决。为什么不支持删除单个 XML 列?