开发者社区> 问答> 正文

用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 95 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
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
金融级 PostgreSQL监控及优化 立即下载
PostgreSQL在哈啰的实践-周飞 立即下载
PostgreSQL高并发数据库应用数据 立即下载