【问题标题】:Dropping XML columns in DB2在 DB2 中删除 XML 列
【发布时间】: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

https://www.ibm.com/support/knowledgecenter/SSEPGG_11.5.0/com.ibm.db2.luw.messages.sql.doc/com.ibm.db2.luw.messages.sql.doc-gentopic5.html#sql1242n

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 列?

标签: sql db2 db2-luw db2-9.7


【解决方案1】:

这在 Db2-Linux/Unix/Windows 中仍然是一个限制,直到并包括 Db2 v11.5。

IBM 状态(在 SQL1242N 原因代码 7 的帮助中)

"对于包含多个 XML 数据类型列的表,要么执行 不删除任何 XML 列或删除表中的所有 XML 列 使用单个 ALTER TABLE 语句

"

此限制仅适用于具有多个 XML 列的表。

您可以通过多种方式解决问题,例如创建一个新表并将现有数据复制到其中等,或者以不同的方式排列您的物理数据模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    相关资源
    最近更新 更多