开发者社区 > 云原生 > 中间件 > 正文

seata用1.6.0版本,在server端报了now(integer)函数不存在,这是啥原因?

seata用1.6.0版本,在server端报了now(integer)函数不存在,我用的pg库,这是啥原因?image.png

展开
收起
鸡蛋灌饼儿 2023-02-06 11:24:26 162 0
3 条回答
写回答
取消 提交回答
  • 可能SEATA不支持PostgreSQL中的now()函数,或者这个函数不存在或者存在错误。
    image.png

    ——参考来源于SEATA官方文档

    2023-12-23 20:10:33
    赞同 1 展开评论 打赏
  • 北京阿里云ACE会长

    从您提供的信息来看,问题可能是由于Seata的1.6.0版本与您使用的PostgreSQL数据库驱动不兼容导致的。在PostgreSQL中,now(integer)这个函数是不存在的。now()函数是存在的,但是它返回的是一个timestamp类型的值,而不是integer类型的值。
    您可以在数据库层面将now()函数的结果强制转换为integer类型,但是在Java代码中,您需要使用对应的Java类型来接收结果。这里是一个可能的解决方案:

    // 假设您有一个名为nowInt的 integer 类型的变量,用于存储 now() 函数的结果
    // 您可以通过以下方式将 now() 函数的结果存储到该变量中
    // 注意:这里假设您使用了 HikariCP 作为数据库连接池,您可以根据实际情况进行调整
    // 同时,您需要确保您的 PostgreSQL 驱动支持 setObject() 方法
    try {
    PreparedStatement preparedStatement = connection.prepareStatement("SELECT now() AS nowInt");
    ResultSet resultSet = preparedStatement.executeQuery();
    if (resultSet.next()) {
    Object nowObj = resultSet.getObject("nowInt");
    if (nowObj instanceof java.sql.Timestamp) {
    Timestamp timestamp = (Timestamp) nowObj;
    nowInt = timestamp.getTime();
    } else {
    throw new IllegalStateException("Expected Timestamp, but got " + nowObj.getClass().getName());
    }
    }
    resultSet.close();
    preparedStatement.close();
    } catch (SQLException e) {
    throw new RuntimeException("Failed to get current timestamp as integer", e);
    }

    然后,您可以在您的 Seata 服务端代码中使用 nowInt 变量,而不是直接调用 now() 函数。

    2023-12-19 20:33:20
    赞同 展开评论 打赏
  • 当你在使用 Seata 1.6.0 版本与 PostgreSQL (pg库) 时,如果遇到 "now(integer)函数不存在" 的错误,可能是由于以下原因:

    • 语法错误:now(integer) 并不是 PostgreSQL 中的有效函数调用。now() 是一个不带参数的函数,它返回当前的日期和时间。如果你尝试使用 now(integer),PostgreSQL 会抛出错误,因为它不识别这样的函数调用。确保你正确使用了 now() 函数,不要传递任何参数。
    • 版本问题:虽然不太可能,但有可能是因为 Seata 的某个版本与你的 PostgreSQL 版本不兼容。检查你的 Seata 和 PostgreSQL 的版本,确保它们是兼容的。
    • 配置问题:确保你的 Seata 和 PostgreSQL 的配置都是正确的。检查 Seata 和 PostgreSQL 的配置,确保它们没有错误。
    2023-12-14 17:21:20
    赞同 展开评论 打赏

为企业提供高效、稳定、易扩展的中间件产品。

热门讨论

热门文章

相关电子书

更多
《Seata 1.3 新特性以及如何参与社区》 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载