开发者社区> 问答> 正文

用druid连接Postgresql刷新物化视图,刷新不了

Caused by: java.sql.SQLException: sql injection violation, dbType postgresql, druid-version 1.2.4, class com.alibaba.druid.sql.ast.statement.SQLRefreshMaterializedViewStatement not allow : refresh materialized view <table_name>

如图,我该怎么做?

原提问者GitHub用户shenQQQ

展开
收起
山海行 2023-07-05 17:59:56 62 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在使用 Druid 连接池连接 PostgreSQL 数据库时,刷新物化视图的语句与直接使用 JDBC 连接刷新物化视图的语句是一致的,即:

    Copy
    REFRESH MATERIALIZED VIEW my_materialized_view;
    如果您使用上述语句刷新物化视图,但是刷新不成功,可能有以下几种原因:

    物化视图定义中包含 "WITH NO DATA" 子句
    如果物化视图定义中包含 "WITH NO DATA" 子句,那么该物化视图不包含任何数据,因此无法刷新。为了避免这种情况,应该在定义物化视图时省略 "WITH NO DATA" 子句。

    物化视图依赖于其他物化视图
    如果物化视图依赖于其他物化视图,那么刷新物化视图可能会导致依赖关系不一致。为了避免这种情况,应该先刷新依赖的其他物化视图,再刷新当前的物化视图。

    物化视图依赖于不稳定的函数
    如果物化视图中使用了不稳定的函数,例如随机数函数或当前时间函数等,那么刷新物化视图可能会导致结果不一致。为了避免这种情况,应该避免在物化视图中使用不稳定的函数。

    数据库连接不是自动提交模式
    如果数据库连接不是自动提交模式,那么刷新物化视图后需要手动提交事务才能生效。

    2023-07-30 20:57:02
    赞同 展开评论 打赏
  • 问题已修复,请用新版本

    https://github.com/alibaba/druid/releases/tag/1.2.14

    原回答者GitHub用户wenshao

    2023-07-06 10:42:07
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载
2023云栖大会:和客户一起玩转PolarDB新特性 立即下载
2023云栖大会:PolarDB for AI 立即下载