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
在使用 Druid 连接池连接 PostgreSQL 数据库时,刷新物化视图的语句与直接使用 JDBC 连接刷新物化视图的语句是一致的,即:
Copy
REFRESH MATERIALIZED VIEW my_materialized_view;
如果您使用上述语句刷新物化视图,但是刷新不成功,可能有以下几种原因:
物化视图定义中包含 "WITH NO DATA" 子句
如果物化视图定义中包含 "WITH NO DATA" 子句,那么该物化视图不包含任何数据,因此无法刷新。为了避免这种情况,应该在定义物化视图时省略 "WITH NO DATA" 子句。
物化视图依赖于其他物化视图
如果物化视图依赖于其他物化视图,那么刷新物化视图可能会导致依赖关系不一致。为了避免这种情况,应该先刷新依赖的其他物化视图,再刷新当前的物化视图。
物化视图依赖于不稳定的函数
如果物化视图中使用了不稳定的函数,例如随机数函数或当前时间函数等,那么刷新物化视图可能会导致结果不一致。为了避免这种情况,应该避免在物化视图中使用不稳定的函数。
数据库连接不是自动提交模式
如果数据库连接不是自动提交模式,那么刷新物化视图后需要手动提交事务才能生效。
问题已修复,请用新版本
https://github.com/alibaba/druid/releases/tag/1.2.14
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。