【求救】关于pgsql的stringtype=unspecified的偶发问题

lobell 2024-02-06 18:17:55

我的工程使用如下组件:

mybatis:3.5.6
spring-jdbc:5.3.27
postgresql:42.6.0
druid:1.0.2

配置的连接串也包含了stringtype=unspecified,让驱动把字符串当成未确定的类型传给pgsql服务器。

NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
            String strSQL = "insert into zgh_test(f1,f2,f3) values(:F1,:F2,:F3) ";
            Map<String,Object> p = new HashMap<>();
            p.put("F1",String.valueOf((new Date()).getTime()));
            p.put("F2",String.valueOf((new Date()).getTime() * 1.0/1000.0));
            p.put("F3",String.valueOf((new Date()).getTime() * 1.0/1000.0));

            List<Map<String, Object>> query = namedParameterJdbcTemplate.execute(strSQL,p,new PreparedStatementCallbackImpl());

其中zgh_test表的F1是int8,f2是numeric,f3是varchar。

这种写法绝大部分是成功的,pgsql能够自动识别对应的类型,但有极少数的情况会报:

invalid input syntax for type integer: "28.039389"(这是样例);

而且一定是报integer,而不报其他类型的错误。

不仅插入还是更新还是查询,都有机会出现这个问题,出现概率大约是万分之五左右。

 

请问各位牛人,是否遇到这个问题?怎么复现(不一定要解决)

PS:

我现在的解决方法就是:

"insert into zgh_test(f1,f2,f3) values(:F1,:F2::numeric,:F3::varchar) ";

...全文
2363 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文档是一份全面的《Linux命令手册大全》,系统性地整理了日常运维与开发中常用的Linux命令,按实际应用场景分为22个类别,涵盖文件操作、文本处理、系统管理、网络配置、安全防火墙、容器虚拟化等核心领域。每个命令均提供简洁的作用说明和典型用法示例,并标注权限要求(如root或普通用户)、发行版差异及注意事项,部分内容还包含延伸工具和最佳实践建议。附录中提供了常见故障排查流程和高危命令警示,帮助用户高效、安全地使用Linux系统。; 适合人群:具备基本Linux使用经验的开发者、运维工程师和技术支持人员,尤其适合工作1-3年需提升实操能力的技术人员;也适合作为资深用户的速查参考手册。; 使用场景及目标:①快速查找并掌握各类Linux命令的标准用法;②解决实际工作中遇到的系统管理、性能调优、网络诊断等问题;③学习命令组合与管道技巧以提高自动化效率;④规避高危操作风险,规范生产环境操作行为。; 阅读建议:此资源以实用为导向,建议结合具体工作场景查阅,优先掌握高频命令及其组合用法,同时注意区分发行版差异和权限约束。初学者应配合实验环境动手练习,进阶用户可重点关注附录中的排查流程与性能观测技巧。

975

社区成员

发帖
与我相关
我的任务
社区描述
PostgreSQL相关内容讨论
sql数据库数据库架构 技术论坛(原bbs)
社区管理员
  • PostgreSQL社区
  • yang_z_1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧