oracle - ORA-01882: 在 Liquibase Gradle 插件中找不到时区
问题描述
在我们的项目中,我们使用 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()
}
}
}
解决方案
您需要在运行 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
推荐阅读
- google-chrome - 更新到 google chrome 版本 74 后 data-toggle="collapse" 折叠时不能卡在一半
- python - 在没有numpy polyfit的python中拟合二次函数
- php - 从废弃的函数 create_function 迁移
- angular - 模块没有导出成员'Md5'?
- nginx - 只允许来自 IP 地址的 nginx 访问
- xamarin - 在 Xamarin.Forms 中导航或关闭应用程序时如何保存应用程序的状态?
- epplus - Excel 图表中的次轴
- javascript - Nativescript 真实设备日期和时间
- php - 响应式文件管理器,上传图片ckeditor问题
- c# - 使用 R.NET 加载 xlsx 包