【问题标题】:facing issues while db2 version uplift在 db2 版本升级时面临问题
【发布时间】:2014-08-25 13:25:43
【问题描述】:

有没有办法在系统/会话级别抑制 DB2 9.7 中的警告。我需要抑制特定的警告,我不想对每个单独的存储过程都这样做。

所以如果stackoverflow上的数据库/DB2专家知道任何这样的方法,请分享。

提前致谢。

【问题讨论】:

  • 您能否展示一些来自 9.1 的列定义以及来自 9.7 表的新定义?
  • 对不起.. 我们只是在新数据库中复制数据。并且不改变任何定义。数据/表/存储过程都完全相同,没有任何区别,除了旧数据库中的“长度错误自行处理”和“新数据库抛出运行时错误”
  • 问题不清楚。可以将其解释为迁移数据库时某些(或许多)列的大小翻了一番。发生类似事情可能有一些原因,所以我想确保编码保持不变。具体的、实际的定义可能已经显示了一种可能性,尽管它可能不太可能。没有给出实际的错误代码,而且示例代码似乎是假设的而不是实际的。有必要确定。
  • 抱歉,给您带来的不便。但是我们不允许将实际代码放在这里。我会更新 qsn
  • 只有当长度不同并且发生截断时,DB2 9.7 中才会出现警告 (SQLSTATE 01004)。请参阅DB2 9.7 Assignments and comparisons 主题中的“检索分配”部分。如果没有演示我们可以自己运行的“错误”的代码,就不清楚可以提供什么“答案”。

标签: sql database stored-procedures db2 version


【解决方案1】:

我不明白如何通过迁移到较新版本的 DBMS 来增加列的最大长度,但我认为还有另一个原因。如果您遇到问题的特定表,您可以通过以下方式找出依赖于该表的例程:

select x.routineschema, x.routinename 
from syscat.routines x 
join syscat.routinedep y 
    on x.specificname = y.specificname 
where btype = 'T' 
  and bschema = ? 
  and bname = ?

这只是一个示例,但您应该能够对其进行修改以满足您的需要。

【讨论】:

  • 你的意思是 9.1 忽略了错误,而 9.7 抛出了异常?
  • 9.1 忽略了错误,而 9.7 则抛出了异常。我们在许多表中都面临这个问题。我同意这在逻辑上是错误的。我们不应该将最大长度数据插入到较小长度的变量中。但这以前在 9.1 中有效,现在不起作用。现在要解决这个问题,我们需要做很多工作。所以我们计划避免这个错误,让它像 9.1 一样发生。或者寻找一些简单的解决方案来一次修复/找到所有这些
  • 列的最大长度没有增加。它仍然是一样的,但没有在旧数据库中抛出任何错误,尽管它是一个错误,但现在我们很难找到并解决这些问题。
  • 奇怪,DB2 在这些问题上一直非常严格,但我没有任何东西可以测试。您能否确定哪些表可能导致错误,例如 varchar 列长度为 40 的表?
  • NO.. 这不会解决我们的问题.. 到目前为止,我们发现这个问题至少有 7-8 个表,但可以肯定的是,我们需要从我们可以面对的任何地方解决这个问题。所以需要寻找简单的方法。是否有任何工具可以帮助我们检查列大小和变量大小是否相同
猜你喜欢
  • 1970-01-01
  • 2021-08-22
  • 2019-01-19
  • 2022-12-05
  • 2021-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多