【问题标题】:Gradle: Cannot run SQL Script due to not having correct permissions?Gradle:由于没有正确的权限而无法运行 SQL 脚本?
【发布时间】:2017-04-16 00:18:19
【问题描述】:

我在我的项目中添加了以下SQL 脚本,由Gradle 运行:

   CREATE OR REPLACE TRIGGER my_trigger
        BEFORE update of ID ON person
        FOR each row
     BEGIN
        :new.updated := systimestamp;
     END;;

DBDeploy 任务尝试运行此脚本时,我收到无法运行脚本的错误,因为用户没有所需的permissions

如何在我的 Gradle 脚本中解决此问题?

【问题讨论】:

  • 您的 DBDeploy 任务在运行脚本时是否以拥有 person 表的模式登录?
  • 请在问题中添加错误消息。我假设使用过的 DB 用户无权添加/修改触发器。

标签: java oracle gradle oracle11g triggers


【解决方案1】:

从具有“强大”权限(最强大的是SYSDBA)的数据库会话中,您应该授予该数据库用户(您从 gradle 连接的用户)“创建触发器”的权限,如下所示:

-- if the user used in gradle is the same user that owns the schema, like it seems
grant CREATE TRIGGER to <the user>;

-- if the user used in gradle is a different user, you must grant him a more powerful right:
grant CREATE ANY TRIGGER;

然后从 gradle 发出命令(请记住,如果他们是两个不同的用户,您必须指定用户所在的架构)

CREATE OR REPLACE TRIGGER the_schema.my_trigger...

还有其他一些权限可以被授予以允许创建触发器(例如GRANT resource to...),但上面的那些是最适合您的目的的权限(为了不授予额外的不必要的权限)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-28
    • 2019-06-21
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 2019-05-22
    • 2021-09-25
    • 2013-04-07
    相关资源
    最近更新 更多