请选择 进入手机版 | 继续访问电脑版

JeeGit 官方论坛

找回密码
立即注册
搜索
热搜: 活动 交友 discuz
发新帖

1

收听

0

听众

181

主题
发表于 2022-11-2 09:37:59 | 查看: 852| 回复: 0
https://blog.csdn.net/cyan20115/article/details/106555070


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



今天我遇到一个奇怪的错误,实际上我的公司计划将现有的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

例如


select * from score where scordid =?::smallint
如果使用像我这样的值列表,则需要包装statementBuilder以将StandardStatamentBuilder覆盖为您合适的数据类型。


  
     
您需要登录后才可以回帖 登录 | 立即注册

QQ|Archiver|手机版|小黑屋|JeeGit 官方论坛 ( 吉ICP备19001578号-2|吉B2-20200006 )

GMT+8, 2024-3-29 16:24 , Processed in 0.024739 second(s), 17 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表