druid + mybatis + spring druid版本 1.0.31
插入语句中带有 #{time}::timestamp without time zone,
报异常: com.alibaba.druid.sql.parser.ParserException: syntax error, error in :'tamp without time zone, ',expect RPAREN, actual IDENTIFIER without
实际数据插入成功
原提问者GitHub用户NeedCuriosity
根据你提供的信息,Druid SQL 解析器可能无法正确解析 PostgreSQL 插入语句中的 #{time}::timestamp without time zone
这样的语法。这可能导致报错。
为了解决这个问题,可以尝试以下方法:
1. 确保你使用的是 Druid 的最新版本。在最新版本中,可能已经修复了该问题。
2. 将插入语句中的 #{time}::timestamp without time zone
修改为 CAST(#{time} AS timestamp)
。这样可以将参数值转换为 timestamp 类型后再传入,避免 Druid SQL 解析器无法解析参数类型的问题。
3. 如果你使用的是 MyBatis 3.4.0 及以上版本,可以在 mybatis-config.xml
文件中配置 jdbcTypeForNull
属性为 NULL
。这样 MyBatis 会将 null 值转换为 SQL 中的 NULL,从而避免 Druid SQL 解析器无法解析参数类型的问题。
如果以上方法仍然不能解决问题,建议查阅 Druid 的官方文档或咨询相关技术支持,以获取进一步帮助。
根据你提供的信息,可能是由于 Druid SQL 解析器无法正确解析 ::timestamp without time zone 的语法导致的异常。
在 PostgreSQL 中,::timestamp without time zone 是用于将字符串转换为 timestamp 类型的语法。但是,Druid SQL 解析器可能无法正确解析该语法,导致报错。
为了解决这个问题,你可以将插入语句中的 #{time} 参数值转换为 timestamp 类型后再传入。
如果你使用的是 MyBatis 3.4.0 及以上版本,你可以在 mybatis-config.xml 文件中配置 jdbcTypeForNull 属性为 NULL,这样 MyBatis 会将 null 值转换为 SQL 中的 NULL,从而避免 Druid SQL 解析器无法解析参数类型的问题。
如果你在插入语句中使用了#{time}::timestamp without time zone,但是Druid连接池报错,可能是因为Druid连接池无法解析该语句。具体来说,Druid连接池可能无法解析#{time}::timestamp without time zone这个语法,因为它不是一个标准的时间戳类型参数语法。
问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。