DB2 SQL0440N错误的处理

Wesley13
• 阅读 816

症状:

测试部的同事在一台PC上部署了一个DB2 v8.2,同时在这台PC上部署了TOMCAT,上面跑WebService。

她修改了系统时间,改了N次,有未来的时间,也有过去的时间。

问题是在这之后,再使用Quest Central for DB2 v4.9访问数据库,就会出SQL0440N错误,而用DB2控制中心则正常。

解决:

见转载的下文:红字部分。

结论:

如果有修改系统时间的需求,那么不要将数据库和应用部署在一起。

转自:www.ibm.com

如何处理 DB2 使用过程中遇到的SQL0440N 的错误?

Document #: 1807544E21000

Body:

[标题] 如何处理 DB2 使用过程中遇到的 SQL0440N 的错误?

环境:
产品:DB2 UDB
平台:跨平台
版本:v8,v7

问题描述:

在调用 DB2 所自带的函数(如 SUM,MAX 等)时,有时会遇到 SQL0440N 的报错信息,这里介绍导致这一问题发生的一种原因,及其解决问题的方法。

解答:

如果用户在运行包含 DB2 自带函数的 SQL 语句时,如下述使用了 ABS 函数的查询语句:

db2 select prodname, abs(margin) from prodlist

遇到 SQL0440N 的错误:

SQL0440N 在函数路径中找不到名称为 "ABS" 且带兼容自变量的函数。 SQLSTATE=42884

使用命令:

db2 ? sql0440n

查看错误的解释时,得到如下得输出内容:

SQL0440N 找不到具有兼容自变量的类型为“<例程类型>”的名为“<例程名>”的已授权例程。

解释:

当数据库管理器找不到可用来实现引用的例程时,若引用例程“ <例程名>” ,则会发生此错误。引起此错误的原因有下列几个:

从输出信息中对问题原因的解释可以发现,导致这一问题的原因有多种,当用户将所列示的原因逐条检查后,却发现这些都不是导致自己当前所遇到的 SQL0440N 错误的原因,此时可考虑另外一个 SQL0440N 解释信息中未提到的一种情况:即当函数的创建时间晚于系统的当前时间,同样会出现该报错。

为检查问题,用户可利用下面的 SQL 语句对各函数创建的时间戳选项 CREATE_TIME 进行查询:

db2 select funcschema, funcname, create_time from syscat.functions

如果存在某些函数的创建时间晚于当前系统时间的情况,例如用户误置系统的时间为过去某个时间,而使用的函数的创建时间又晚于这一时间,便会在运行相关 SQL 语句时遇到 SQL0440N 的报错。

解决这一问题的方法很简单,用户只要重新正确地设置操作系统的当前时间,使它晚于 DB2 自带函数的创建时间即可。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
梦
3年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。