PostgreSQL –错误:运算符不存在:smallint =字符变化(解决方案)

在将j2ee Web应用从PostgreSQL 8.2升级到8.3时,遇到运算符不存在:smallint = character varying的错误。该问题可能与8.3中对隐式转换的更改有关。解决方法包括在发送语句前强制转换数据类型或使用显式转换(如:: smallint)。可以修改StatementBuilder以适配新版本的要求。
摘要由CSDN通过智能技术生成

今天我遇到一个奇怪的错误,实际上我的公司计划将现有的j2ee Web应用程序从PostgreSQL 8.2迁移到最新的PostgreSQL 8.3。 但是在我正确设置了PostgreSQL 8.3并启动Web应用程序之后,我不断遇到以下错误

org.postgresql.util.PSQLException: ERROR: operator does not exist: smallint = character varying

似乎是数据类型不匹配错误,有趣的是它在PostgreSQL 8.2上工作正常,但在PostgreSQL 8.3上工作正常吗? 我搜查了几个小时才发现,这可能与8.3中对隐式转换的更改有关。 PostgreSQL 8.3似乎花了很多精力来增强和检查数据类型。

这将产生很多副作用,因为我们在valuelist中设置字符串以比较任何列,并让PostgreSQL自动进行转换。
PostgreSQL 8.3(我猜)不再支持此功能。 在这里,我提供了两种解决上述错误的方法。


——————
1)在将语句发送到PostgreSQL之前,使用setInt或setLong强制转换为适当的数据类型

2)使用显式转换,如:: smallint

例如

s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值