8
回答
dbutils中的类型匹配问题
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

我用的是postgresql数据库,在dbutils中怎么对应数据库中的character类型,我给了Character、char,String 都不对。奇怪了。

举报
joliny
发帖于7年前 8回/397阅
共有8个答案 最后回答: 7年前

Caused by: java.lang.IllegalArgumentException: Can't change resolved type for param: 8 from 1043 to 1042
 at org.postgresql.core.v3.SimpleParameterList.setResolvedType(SimpleParameterList.java:230)
 at org.postgresql.core.v3.QueryExecutorImpl.sendOneQuery(QueryExecutorImpl.java:1488)
 at org.postgresql.core.v3.QueryExecutorImpl.sendQuery(QueryExecutorImpl.java:1062)
 at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
 at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
 at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367)
 at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:321)
 at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
 at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:611)
 at com.spirit.spark.helper.QueryHelper.update(QueryHelper.java:317)
 at com.spirit.spark.models.Users.addUser(Users.java:37)
 at com.spirit.spark.controllers.SignupController.submit(SignupController.java:60)
 ... 27 more

现在我的做法是吧Character全部用Character  varying 代替,然后对应字符串就可以了。不过方法很不满意!

这已经跟dbutils无关了,异常是由 postgresql 的 jdbc 驱动跑出来的

你如果用jdbc编写的话,是调用什么方法来填充这个 Character 字段的呢?

引用来自#6楼“joliny”的帖子

一般都是用字符串来填充的。

只要jdbc ok 的话,dbutils 就没问题啊

是啊,所以我才觉得奇怪!这次我升级到了8.4.4-1,使用了最新的驱动,可能是jdbc驱动的问题吧!

确实是驱动的问题。现在在官网下载的还是8.4.4-1的驱动,这个有问题,去jdbc网站上已经有了8.4.4-2用这个就没有问题了!!

顶部