【问题标题】:ORA-01882: timezone region not found in Liquibase Gradle pluginORA-01882: 在 Liquibase Gradle 插件中找不到时区
【发布时间】:2019-07-21 08:27:26
【问题描述】:

在我们的项目中,我们使用的是 Liquibase gradle 插件。最近,我们将 ojdbc8 插件更新到了 18.3.0.0 版本。不幸的是,它导致我们的 Liquibase 任务失败并出现 ORA-01882: timezone region not found。我为这个错误找到了一些解决方案(例如:ORA-01882: timezone region not found),但我不知道如何将这个 -Duser.timezone 或 -Doracle.jdbc.timezoneAsRegion 属性添加到 gradle 任务。我尝试了不同的方法,但没有成功。

这就是我们的 build.gradle 的一些关键部分的样子:

liquibase {
    activities {
        oracle {
            changeLogFile "$liquibasePath/db.changelog-master.xml"
            driver liquibaseProps['oracle.driver']
            url "jdbc:oracle:thin:@${liquibaseProps['oracle.ip.port']}:${liquibaseProps['oracle.schema']}"
            username liquibaseProps['oracle.username']
            password liquibaseProps['oracle.password']
            outputDefaultSchema false
            outputDefaultCatalog false
        }
    }
}


def generate(taskName, taskDescription, generateCommand) {
    project.task(taskName, type: LiquibaseTask) {
        group = 'Liquibase'
        description = taskDescription

        inputs.property('databases', getRunList())
        inputs.dir liquibasePath
        outputs.dir sqlScriptsPath


        doLast {
            new LiquibaseSqlCleanupTask(sqlScriptsPath).execute()
        }
    }
}

【问题讨论】:

    标签: oracle gradle liquibase ojdbc


    【解决方案1】:

    您需要在运行 gradle 时将其设置为系统属性。相关文档位于 https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_system_properties,但这里是最相关信息的副本/粘贴:

    使用 -D 命令行选项,您可以将系统属性传递给 运行 Gradle 的 JVM。 gradle 命令的 -D 选项具有 与 java 命令的 -D 选项效果相同。

    您还可以在 gradle.properties 文件中使用 前缀 systemProp.

    因此,您可以在项目的根目录中创建一个 gradle.properties 文件,其内容如下:

    systemProp.oracle.jdbc.timezoneAsRegion=false
    

    【讨论】:

    • 谢谢,帮助!我将此系统属性直接添加到我的模块的 build.gradle 中,它可以工作!
    猜你喜欢
    • 2021-01-21
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2019-11-26
    • 2018-09-04
    • 2020-10-17
    • 2019-05-01
    相关资源
    最近更新 更多